指针:用*表示变量本身没有任何存储值,而是拿到了原本数据的存储路径
地址:地址需要和指针搭配使用
指针不能运算
Go 语言只有值传递一种方式
package main
import "fmt"
func main() {
var a int = 2
var pa *int = &a
*pa = 3
fmt.Println(a)
fmt.Println(pa)
}
数组指针:数组所在的地址
package main
import "fmt"
func main() {
var arr = [2]int{1, 2}
var arrP *[2]int
arrP = &arr
fmt.Println(arr, arrP)
}
指针数组:由指针组成的数组
package main
import "fmt"
func main() {
var arrP [2]*int
var int1 = 1
var int2 = 2
arrP = [2]*int{&int1, &int2}
*arrP[1] = 22
fmt.Println(int2)
}
指针传参
package main
import "fmt"
func main() {
var str1 = "我定义了"
change(&str1)
fmt.Println(str1)
}
func change(p1 *string) {
*p1 = "我变了"
}
隐式赋值得到地址
package main
import "fmt"
func main() {
var str1 = "我定义了"
p := &str1
*p = "我变了"
fmt.Println(str1)
}