값 범위를 반복할 때 단순히 복사본으로 작업하기보다는 원래 값을 수정하려는 경우가 많습니다. 그러나 기본적으로 범위 구성은 각 값의 복사본을 반환합니다.
package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for _, e := range array { e.field = "foo" } for _, e := range array { fmt.Println(e.field) fmt.Println("--") } }
위 코드에서 배열에 있는 각 요소의 "필드" 필드는 범위가 값을 복사하므로 수정되지 않습니다. e 변수.
원래 값을 수정하려면 범위 구성을 사용하여 값을 반복할 수 없습니다. 대신 배열 인덱스를 사용해야 합니다.
package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for idx, _ := range array { array[idx].field = "foo" } for _, e := range array { fmt.Println(e.field) fmt.Println("--") } }
배열 인덱스를 사용하면 배열의 원래 값에 직접 액세스하고 필요에 따라 수정할 수 있습니다.
위 내용은 Go에서 범위 반복 중에 원래 값을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!