写入指针,但是编译器仍然抱怨未使用的变量

时间:2018-10-23 18:33:15

标签: go

以下代码导致编译错误:

  

main.go:8:9:已声明且未使用p

package main

func main() {
    pointers := make([]*int, 5)

    a := 1 // create an int

    for _, p := range pointers {
        p = &a
    }
}

写到p算不算使用它?

1 个答案:

答案 0 :(得分:4)

P仅限于循环块,并且在每次循环时都会获得pointers slice元素的副本。不过,这将起作用:

package main

import "fmt"

func main() {
    pointers := make([]*int, 5)

    a := 1 // create an int

    for i := range pointers {
        pointers[i] = &a
    }
    fmt.Println(pointers)
}

Playground