关于结构和结构体指针

wzwmzm · · 1416 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

在使用结构时,不管是不是用指针隐含的都是使用指针方式的。如下: package main import "fmt" type Vertex struct { X int Y int } func main() { v := Vertex{1, 2} p := &v p.X = 1e9 fmt.Println(v) fmt.Println(v.X) A fmt.Println(p.X) B fmt.Println((*p).X) C } 结果: {1000000000 2} 1000000000 1000000000 1000000000 v为直接使用方式,p为指针使用方式,但在A、B、C三行使用上没有区别,结果也相同。可以理解为两种方式在内部都是按指针方式在使用的。但也有不同的时候比如在使用接口时,如果只定义了直接方法则使用直接方法和指针方法都没有问题。但如果只定义了指针方法,则只能使用指针方法,使用直接方法会出现未定义错误。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1416 次点击  
加入收藏 微博
1 回复  |  直到 2016-12-19 07:29:01
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传