首页 > 其他 > 详细

Golang中值类型和结构体

时间:2020-06-06 22:33:08      阅读:134      评论:0      收藏:0      [点我收藏+]
func main() {
	var s = Stu{
		name: "法外狂徒",
	}
	s.name = "法内狂徒"
	(&s).name = "守法公民张三"

	fmt.Printf("%#v", s)

}

result:

------------------------------------------

main.Stu{name:"守法公民张三"}
Process finished with exit code 0

------------------------------------------

Go中结构体是值类型,值类型直接指向内容,所以可用s直接修改它内部变量值。

那&s呢?个人理解为就是取s结构体的地址,但是s的地址本身就指向内容,所以这里是等效的。

实际上变量本身就是一种特殊的指针,但是类型固定能直接使用赋值(静态语言,动态语言如Python则不然),不需要加上*(析址符)

上面如果写成:

(*s).name = "守法公民张三"  //  error:Invalid indirect of ‘s‘ (type ‘Stu‘)

变量的地址可以取,但是反之则不然,不能把一般的变量当成地址来取该地址里的东西,如果可以,那么是指针



Golang中值类型和结构体

原文:https://www.cnblogs.com/CodeBeyond/p/13056701.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!