go语言之指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言之指针相关的知识,希望对你有一定的参考价值。

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

abc := 10
fmt.Println(&abc)

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

fmt.Println(*abc)

打印出来是10

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

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

打印出abc is a string

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

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

var tt *string
mn := "abc"
tt = &mn
*tt = "tt"
fmt.Println(*tt)

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

type Hero struct 
Name string

hero := &Hero
Name:"刘备"

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

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

abc := &[3]string"aaa","bbb","ccc"
fmt.Println(abc[0])

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

以上是关于go语言之指针的主要内容,如果未能解决你的问题,请参考以下文章

8.Go语言基础之指针

Go语言基础之指针

Go语言第十篇:Go数据结构之:指针

Go语言基础之指针

go语言之指针

go语言之指针