go语言中的Invalid indirect of ‘(p1).name‘ (type ‘string‘)错误

go语言中的Invalid indirect of ‘(p1).name‘ (type ‘string‘)错误,第1张

代码:

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都可以实现对属性的访问,但是要注意括号、

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/996153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存