如图
按我的理解
var ticker *Ticker // 是一个指针变量
ticker = &Ticker{ // 指针指向结构体的地址
Url: "werwerwer",
Value: 33333333,
}
fmt.Println(ticker.Url) // 应该输出ticker.Url 的内存地址才对啊,怎么直接是值?
没有系统语言的编程经验
对指针还不太理解
求大神解答
如图
按我的理解
var ticker *Ticker // 是一个指针变量
ticker = &Ticker{ // 指针指向结构体的地址
Url: "werwerwer",
Value: 33333333,
}
fmt.Println(ticker.Url) // 应该输出ticker.Url 的内存地址才对啊,怎么直接是值?
没有系统语言的编程经验
对指针还不太理解
求大神解答
Go语言保留着C中值和指针的区别,但是对于指针繁琐用法进行了大量的简化,引入引用的概念。所以在Go语言中,你几乎不用担心会因为直接操作内寸而引起各式各样的错误。Go语言的指针,基本上只剩下用于区分 byref 和 byval 语义。
建议别往c语言的指针硬套,golang的指针要好用很多,多写写多尝试很快会掌握。
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答920 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.2k 阅读
你的
Ticker
结构体中的Url
是string
类型,并不是*string
, 所以可以正确输出 字符信息。至于结构体的指针,文档上描述为:
就是说结构体的的字段/方法可以通过指针直接使用,而不用啰嗦的显性写成(*p),这是语言允许的。