CATCHV Blog

go 1.22 for loop 변경 본문

Dev/Go

go 1.22 for loop 변경

catchv 2024. 2. 23. 10:52
반응형

go 1.22 에서 for loop의 변경 점이 몇 가지 있습니다.

 

 

for 사용시 for문에서 선언된 변수가 한번만 생성되어서 내부의 goroutine 사용시 마지막 변수가 나오는 문제점이 있었습니다.

이번 1.22에서는 매번 생성되므로 문제가 해결 됩니다.

 

샘플 코드

package main

import (
	"fmt"
	"sync"
)

func main() {
	numbers := []any{1, 2, 3, 4, 5}

	var wg sync.WaitGroup
	for _, number := range numbers {
		wg.Add(1)

		go func() {
			defer wg.Done()
			fmt.Println(number)
		}()
	}
    
	// // 1.22 이전 버전은 아래의 코드르 형태임
	// var number any
	// for _, number = range numbers {
	// 	wg.Add(1)

	// 	go func() {
	// 		defer wg.Done()
	// 		fmt.Println(number)
	// 	}()
	// }
    

	wg.Wait()

	fmt.Println("---------- App Done")
}

 

go 1.22 이전 버전

5
5
5
5
5
---------- App Done

 

go 1.22 버전

5
3
2
4
1
---------- App Done

 

이 문제는 너무 잘알려져 있어서 Codeium에서는 코드를 변경하라고 가이드를 제공합니다.

 

반응형

'Dev > Go' 카테고리의 다른 글

google Project IDX  (0) 2024.04.02
golang sqlc query log print  (0) 2024.03.08
dotnet으로 Golang gin 로컬 개발(localhost) 인증서 만들기  (0) 2024.01.11
Golang cross-compile windows, mac(darwin), linux  (0) 2023.12.18
go - package  (1) 2023.11.24
Comments