我正在阅读golang教程:https://tour.golang.org/moretypes/10
我对setter
如何打印fmt.Println
值感到困惑,希望你能帮助我。
nil
结果是:
package main
import "fmt"
func main() {
var z []int
fmt.Println("z: ", z)
if z == nil {
fmt.Println("z is nil!")
}
fmt.Println("nil:", nil)
}
由于z为零,为什么z打印为z: []
z is nil!
nil: <nil>
而不是[]
?
谢谢!
答案 0 :(得分:8)
fmt
包使用反射来确定要打印的内容。由于z
的类型是切片,fmt
使用[]
符号。
由于切片,通道,接口和指针都可以为零,如果fmt
打印出不同的东西,它会很有用。如果您需要更多上下文,请使用%v
格式:http://play.golang.org/p/I1SAVzlv9f
var a []int
var b chan int
var c *int
var e error
fmt.Printf("a:%#v\n", a)
fmt.Printf("b:%#v\n", b)
fmt.Printf("c:%#v\n", c)
fmt.Printf("e:%#v\n", e)
打印:
a:[]int(nil)
b:(chan int)(nil)
c:(*int)(nil)
e:<nil>
答案 1 :(得分:0)
单词nil表示:未初始化。 在这种情况下,您正在初始化幻灯片,但尚未分配任何值。 记住PICS(指针,接口,CHANNELS和SLIDES)都已经存在 初始化。