go指针

Posted yzg-14

tags:

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

1. 指针类型

技术图片

package main
import (
	"fmt"
)

// 演示golang中指针类型
func main() {

	// 基本数据类型在内存布局
	var i int = 10
	// i 的地址是什么,&i  // & 地址符
	fmt.Println("i的地址=", &i)  // i的地址= 0xc000062080

	// 下面的 var ptr *int = &i
	// 1. ptr 是一个指针变量
	// 2. ptr 的类型 *int
	// 3. ptr 本身的值&i
	var ptr *int = &i
	fmt.Printf("ptr=%v
", ptr)  // ptr=0xc000062080  // ptr存的地址,但是ptr也有自己的地址
	fmt.Printf("ptr 的地址=%v
", &ptr)  // ptr 的地址=0xc00008e020ptr 指向的值=10
	fmt.Printf("ptr 指向的值=%v", *ptr)  // ptr 指向的值=10  // *ptr取的是存的地址所指向的值

} 

案例

package main
import "fmt"

func main() {

	var num int = 9
	fmt.Printf("num address=%v
", &num)

	var ptr *int
	ptr = &num
	*ptr = 10  // 这里修改时,会到num的值变化
	fmt.Println("num =" , num)

}

技术图片

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