package main
import "fmt"
func main() {
/*
var name string = "我是Golang"
这个 name 是一个普通的变量,当我们调用的时候,机器会给我们返回name所在的地址上的值,
但是出于某些未知的理由我们将这个存储name变量值的地址赋值给其他的变量 比如pointer,此时我们称pointer为指针变量
pointer := &name 此时的pointer的变量只是存储了内存地址,那么这样的变量就是 指针变量
指针变量创建方法
===== 方法一=====
var a =1
pa := &a
====方法二====
先创建内存,再写入值
a := new(string) // 创建
*a = "Golang" // 赋值
===== 方法三=====
a := 1
var pa *string
pa = &a
注意;
& :从一个普通变量中取得内存地址
*:1.当*在赋值操作符(=)的右边,是从一个指针变量中取得变量值,
2.当*在赋值操作符(=)的左边,是指该指针指向的变量
*/
a := 1
pa := &a
fmt.Printf("pa is type %T\n",pa)
pb := new(string)
*pb = "Golang"
fmt.Printf("%s\n",pb) // 这里是取值的 在前 如果不加 返回的是指针地址
c :=1
var pc int
pc = &c
fmt.Println(pc) //这里由于默认是指针 自然返回的就是地址了
fmt.Println(pc) //这里是取值的
}
结果:
image.png
网友评论