注意,一般使用var ptr *float64的时候只是进行了变量类型声明,其值为nil,因为没有指定内存地址,但是使用var ptr = new(float64)不仅仅进行了类型声明,还进行了初始化的操作。其值为类型默认值
var ptr *float64
//*ptr=11
fmt.Printf("(%v, %T)\n", ptr, ptr)
var ptr1 = new(float64)
fmt.Printf("(%v, %T)\n", ptr1, ptr1)
println(*ptr1)
var ptr2 = new(int)
fmt.Printf("(%v, %T)\n", ptr2, ptr2)
println(*ptr2)
LM-SHC-15009820:panguGo jinwan$ go run cmd/cli/main.go
(<nil>, *float64)
(0xc000130020, *float64)
+0.000000e+000
(0xc000130028, *int)
0