登录
首页 >  Golang >  Go问答

为何必须在使用指针时将其解引用为结构指针?

来源:stackoverflow

时间:2024-03-13 12:54:26 214浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《为何必须在使用指针时将其解引用为结构指针?》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我认为我缺少一部分技术背景。但我不明白,为什么我必须使用 * 来访问简单指针的值,而不是访问结构体的值。

例如,使用一个简单的值:

func main() {
    i := 42
    p := &i
    *p = 21         // <<< i have to use an asterisk to access the value
    // ...
}

还有一个结构示例:

type vertex struct {
    x int
    y int
}

func main() {
    v := vertex{1, 2}
    p := &v
    p.x = 1e9       // <<< i do not have to use an asterisk
    // ...
}

(是的,示例来自此处的官方 go lang 教程:https://go-tour-de.appspot.com/moretypes/4)

仅从我的想法来看,我会期待这样的事情

*p.x = 1e9

或者(是的,这有点奇怪)

p.*X = 1e9

那么,为什么我不必使用星号来访问结构指针?


解决方案


在官方 Golang 教程中您发现了该示例 [here] 明确指出:

当我们有结构体指针 p 时,要访问结构体的字段 X,我们可以编写 (*p).X。然而,这种表示法很麻烦,因此该语言允许我们只写 p.X,而不需要显式取消引用。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>