목록Go (5)
4번독수리의 둥지
Go 1.22에서 experimental이었던 range over func 기능이 1.23에서 정식 포함되어, iterator를 구현하여 for range문의 순회 대상으로 넣을 수 있게 되었다. iterator의 타입은 다음과 같다. 아래의 두 타입은 iter 패키지에 Seq, Seq2라는 이름으로 추가되어 있다.func(func() bool)func(func(K) bool)func(func(K, V) bool) 위키의 Backward는 Seq2 구현에 대한 예제이고, 첫 번째 타입을 간단히 구현해 보면,package mainimport "fmt"func seq(num int) func(func() bool) { return func(yield func() bool) { for _ =..
https://ko.wikipedia.org/wiki/위치_독립_코드 위치 독립 코드(PIC: position-independent code) 또는 위치 독립 실행 파일(PIE: position-independent executable)은 메모리의 어딘가에 위치한 기계어 코드의 몸체로서 절대 주소와 관계 없이 적절히 실행된다. PIC는 주로 공유 라이브러리에 사용돼서, 같은 라이브러리 코드도 (사용되는 메모리 공간에 겹쳐써지지 않으면서) 각 프로그램의 주소 공간에 로드될 수 있게 된다. PIC는 또한 메모리 관리 장치(MMU)가 없는 오래된 컴퓨터 시스템에서도 사용되며, 운영 체제가 애플리케이션을 단일 주소 공간 내에서 서로 떨어져 있게 해줄 수 있다. 위치 독립 코드는 수정 없이 어느 메모리 주소에서도..
package main import ( "context" "log" "os" "time" ) func main() { logger := log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile) duration, _ := time.ParseDuration("1s") ticker := time.NewTicker(duration) defer ticker.Stop() for range ticker.C { ctx, cancel := context.WithTimeout(context.Background(), duration) go func(ctx context.Context) { ints := make([]int, 10) logger.Printf("%#v", ints) INTS..
package main import ( "fmt" "time" ) func main() { duration, _ := time.ParseDuration("1s") ticker := time.NewTicker(duration) defer ticker.Stop() for { select { case