Baham's Blog

Above all else, guard your heart.

Go语言-指针

在指针部分,发现一点值得注意的地方。

可以用&取变量地址,包括可以进一步取指针的地址。

但是 不可以用&(&i)


package main

import "fmt"

func main() {
    var i int
    var ip *int
    var ipp **int
    i = 2
    ip = &i
    ipp = &ip //若在此处用&(&i)将会报错
    ippp := &(ipp)
    *ip = 3
    **ipp = 4
    ***ippp = 5
    fmt.Println(i)
}

如上代码示例,可以连续用*取地址带便的变量值,但是不可以连续用&

如果像注释里一样,使用&(&i),将会输出错误:

  # command-line-arguments
  ./p.go:11: cannot take the address of &i

这是在看到《Go语言云动力》里看指针一节,联想到的,不知道官方文档里怎么介绍这一块。




The Original Link: http://baham.github.io/11_29_goyu-yan-zhi-zhen.html
If you want to reprint it, please do under the CC BY-NC-SA 4.0

Comments