Golange range가 새로 만든 대상인지, 만든 대상인지 인용하는지

4090 단어
rangrange가 새로 만든 대상인지, 창설된 대상인지 인용하는지, 쉽게 말하면 range가 range에서 나온 대상에 대한 수정이 그 그룹에 동기화되는지 여부입니다.먼저 다음 코드를 살펴보십시오.
package main

import (
    "fmt"
)

func main() {
    // int 
    arr := []int{1, 2, 3, 4, 5}
    fmt.Println(arr)
    for _, d := range arr {
        d = 0
        if d == 0 { //  , not used 
        }
    }
    fmt.Println(arr)

    // string 
    arr2 := []string{"aaaa", "aaa"}
    fmt.Println(arr2)
    for _, d := range arr2 {
        d = "bbbb"
        if d == "" { //  , not used 
        }
    }
    fmt.Println(arr2)

    // map 
    arr3 := []map[string]string{{"111": "111"}, {"222": "222"}}
    fmt.Println(arr3)
    for _, item := range arr3 {
        item["111"] = "000"
        item["222"] = "000"
    }
    fmt.Println(arr3)
}

다음 실행 결과는 다음과 같습니다.
[1 2 3 4 5]
[1 2 3 4 5]
[aaaa aaa]
[aaaa aaa]
[map[111:111] map[222:222]]
[map[111:000 222:000] map[222:000 111:000]]
따라서 기본 유형의 수조라면range는 새로운 대상을 직접 만들 것이고 그렇지 않으면range가 만든 것은 인용이라는 결론을 얻을 수 있다.

좋은 웹페이지 즐겨찾기