参考URL:
http://ilovers.sinaapp.com/drupal/node/33
1). 指针在 c 中是个重要的东西,& 和 * 一个取地址、一个解析地址,这是 c 的用法,go 中貌似也是这样,but !
2). go 中的指针是个“透明”的东西,也就是偶们可以不通过 * 访问,而是直接访问,比如可以不是 (*q).Y = 20 而是 q.Y = 20,有些伤天害理的赶脚!
3). 结构体,结构体指针,结构体指针的指针,结构体指针的指针的指针;
4). 再说明一下:要访问指针 p 指向的结构体中某个元素 x,不需要显式地使用 * 运算,可以直接 p.x ;
package main import ( "fmt" ) type Vertex struct { X, Y int } var ( p = Vertex{1, 2} q = &Vertex{1, 2} r = Vertex{X: 1} s = Vertex{} ) func main() { /* p := Vertex{1, 2} q := &p q.X = 10 (*q).Y = 20 r := &q s := &r (**s).Y = 30 fmt.Println(p, q, r, s, *q, *r, *s, **r, **s, ***s) */ fmt.Println(p, q, r, s) v := new(Vertex) fmt.Println(v) v.X, v.Y = 11, 9 fmt.Println(v) }
时间: 2024-09-29 02:35:21