Golang 普通指针
优质
小牛编辑
142浏览
2023-12-01
和 C 语言一样,允许用一个变量来存放其它变量的地址,这种专门用于存储其它变量地址的变量,我们称之为指针变量
和 C 语言一样,Go 语言中的指针无论是什么类型占用内存都一样(32位4个字节,64位8个字节)
package main import ( "fmt" "unsafe" ) func main() { var p1 *int; var p2 *float64; var p3 *bool; fmt.Println(unsafe.Sizeof(p1)) // 8 fmt.Println(unsafe.Sizeof(p2)) // 8 fmt.Println(unsafe.Sizeof(p3)) // 8 }
和 C 语言一样,只要一个指针变量保存了另一个变量对应的内存地址,那么就可以通过 * 来访问指针变量指向的存储空间
package main import ( "fmt" ) func main() { // 1.定义一个普通变量 var num int = 666 // 2.定义一个指针变量 var p *int = &num fmt.Printf("%p\n", &num) // 0xc042064080 fmt.Printf("%p\n", p) // 0xc042064080 fmt.Printf("%T\n", p) // *int // 3.通过指针变量操作指向的存储空间 *p = 888 // 4.指针变量操作的就是指向变量的存储空间 fmt.Println(num) // 888 fmt.Println(*p) // 888 }