当前位置:网站首页>go语言之指针

go语言之指针

2022-09-23 08:42:0351CTO

go的指针采用了c语言指针的语法,我们需要特别关注&和*,&表示地址操作符,可以得到指定变量的内存地址。

      
      
abc : = 10
fmt . Println( & abc)
  • 1.
  • 2.

打印出来的是abc的地址,我们可以通过在变量前面加*对其进行解引用

      
      
fmt . Println( * abc)
  • 1.

打印出来是10

指针类型可以跟其他普通类型一样,出现在所有需要用到类型的地方,如变量声明、函数形参、返回值类型、结构字段类型等。

      
      
var abc * string
fmt . Printf( "abc is a %T\n", abc)
  • 1.
  • 2.

打印出abc is a string

所以指针的基本用法就是使用变量指向一个地址,通过&前缀来表示地址,通过前缀*来解引用得出具体变量的值。

也可以通过前缀*来对具体的值进行修改。

      
      
var tt * string
mn : = "abc"
tt = & mn
* tt = "tt"
fmt . Println( * tt)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

指针经常会跟结构体一起使用,如果把结构体当做参数,想要修改结构体的值,传递结构体指针是比较好的方法

      
      
type Hero struct {
Name string
}
hero : = & Hero{
Name: "刘备"
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

在函数中使用hero.Name就可以修改Name的值。

跟结构体一样,我们也可以通过将地址操作符&放置在数组复合字面量的前面来创建指向数组的指针。

      
      
abc : = &[ 3] string{ "aaa", "bbb", "ccc"}
fmt . Println( abc[ 0])
  • 1.
  • 2.

可以直接通过索引来自动实施解引用,没必要写成(*abc)[0]。

原网站

版权声明
本文为[51CTO]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_3764469/5705242

随机推荐