我有一段代码,我不明白为什么go编译器报告一个变量被声明了,但是没有被使用:
package main
import "fmt"
func main() {
var StringSlice []*string
MyStr0 := "Zero"
StringSlice = append(StringSlice, &MyStr0)
MyStr1 := "One"
StringSlice = append(StringSlice, &MyStr1)
MyStr2 := "Two"
StringSlice = append(StringSlice, &MyStr2)
var StrPtr *string
for i, Value := range StringSlice {
fmt.Println(Value)
if i == 1 {
StrPtr = Value
}
} // END for
注解掉Printf语句后,go编译器声明./prog.go:15:6:StrPtr已声明但未使用-参见go-playground中的示例:https://go.dev/play/p/J3p4NDR6fBm当Printf被注解掉时,一切都很好,甚至在StrPtr中存储了正确的字符串指针...提前非常感谢您的帮助!
1条答案
按热度按时间kiz8lqtg1#
问题是你没有使用
StrPtr
。你重新分配了它,但是它从来没有被读取过。如果你把它添加到Printf语句中,错误就会消失。