[Golang] go 1.22

개발者·2024년 2월 29일
0

Golang

목록 보기
4/4
post-thumbnail

Go version이 1.22가 2024.02.06 에 배포되었다

엄청 큰 변화는 없고 툴체인과 몇가지 추가된 기능들이 있는데.


for loop 을 이용한 go routine시 변수 공유가 해결!

func main() {
    done := make(chan bool)

    values := []string{"a", "b", "c"}
    for _, v := range values {
        go func() {
            fmt.Println(v)
            done <- true
        }()
    }

    // wait for all goroutines to complete before exiting
    for _ = range values {
        <-done
    }
}

기존에 위와 같은 코드를 수행하면 우리의 생각은 'a', 'b', 'c' 가 어떤 순서에 의해 출력되길 바라면서 작성을 했지만,
v 변수가 순회하면서 변하면서 'c', 'c', 'c' 와 같이 찍히는 경우를 겪었을 것이다.

1.22에서는 해당 부분이 수정되어서 'a', 'b', 'c' 가 찍힐 수 있게 되었다.


integer range for loop

package main

import "fmt"

func main() {
    for i := range 10 {
        fmt.Println(10 - i)
    }
    fmt.Println("go1.22 has lift-off!")
}

integer로 range for loop을 생성할 수 있게 되었다. 간결한 반복문이 가능해졌다.


math/rand/v2

standard library에 처음으로 v2가 생겼다.

당장에 math/rand 를 없애는건 아니니까 차차 도입하면 될 것 같다.


Reference

profile
solrasido

0개의 댓글