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语言之指针的主要内容,如果未能解决你的问题,请参考以下文章