go的指针学习

Posted 宋米粒

tags:

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

1)指针是什么?

一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址

说白了就是可以先存储内存的地址,在用内存地址找到对应值

2)go中的使用

Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。

Go 语言的取值得地址符是 *,放到一个地址前使用就会返回相应内存对应的值。

package main

import "fmt"

func main() {
	var a int = 10

	fmt.Printf("变量的地址: %x\n", &a)
}

3)指针也可以声明类型

var ip *int        /* 指向整型*/
var fp *float32    /* 指向浮点型 */

4)根据内存地址获取值

package main

import "fmt"

func main() {
	var a int = 2000
	var ip *int /* 声明指针变量 */
	ip = &a     /* 指针变量的存储地址 */
	fmt.Printf("变量的地址: %x\n", &a)
	fmt.Printf("根据地址获取值为: %d\n", *ip) //注意为%d整型
}

5)go的空指针,一个指针变量通常缩写为 ptr。

if(ptr != nil)     /* ptr 不是空指针 */
if(ptr == nil)    /* ptr 是空指针 */

 6)指针数组,原理类似

package main

import "fmt"

const MAX int = 3

func main() {
   a := []int{10,100,200}
   var i int
   var ptr [MAX]*int;

   for  i = 0; i < MAX; i++ {
      ptr[i] = &a[i] /* 整数地址赋值给指针数组 */
   }

   for  i = 0; i < MAX; i++ {
      fmt.Printf("a[%d] = %d\n", i,*ptr[i] )
   }
}

  输出结果

a[0] = 10
a[1] = 100
a[2] = 200

  

 

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

go语言学习笔记 — 基础 — 基本数据类型 — 指针:一文详解go指针

GO语言学习系列五——GO的控制语句(补充指针)

go的指针学习

指针--Go语言学习笔记

Go语言切片

Go指针