代码:
package main
import "fmt"
type Student struct {
name string
age int
}
func main() {
//new函数
//分配内存
//设置零值
//返回指针(重要)
num :=new(int) //是一个指针
fmt.Println(num,*num)
p1 := new(Student)
fmt.Println(p1,*p1)
p1.name = "123"
fmt.Println(p1.name)
fmt.Println(p1,*p1)
fmt.Println(p1.name,*p1.name)
}
输出:
&{ 0} { 0}
&{han 0} {han 0}
han
将最后一行改成
fmt.Println(*p1.name)
报错
invalid indirect of p1.name (type string)
正确方法:
fmt.Println((*p1).name)
以括号分割即可。
总结: new函数返回的是一块内存的指针p1或者*p1都可以实现对属性的访问,但是要注意括号、
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)