一、指针的概念
package main
import "fmt"
// 指针
func main() {
a := 10 // int类型
b := &a // *int类型 int指针
fmt.Println(a, &a) // 10 0xc0000100c0
fmt.Println(b) // 0xc0000100c0
// 变量b是一个int类型的指针 存储变量a的内存地址
c := *b // 根据内存地址取值
fmt.Println(c) // 10
}
二、指针传值示例
package main
import "fmt"
// 指针传值示例
func modify1(x int){
x = 100
}
func modify2(y *int){
*y = 100
}
func main() {
a := 1
modify1(a)
fmt.Println(a) // 1
modify2(&a)
fmt.Println(a) // 100
}
三、内存分配
package main
import "fmt"
func main() {
// new用于类型的内存分配 内存对应的值为类型零值 返回指向类型的指针
a := new(int)
fmt.Println(*a) // 0
*a = 100
fmt.Println(*a) // 100
// make只用于slice、map和channel的初始化 返回这三个引用类型本身
var b map[string]int
fmt.Println(b)
b = make(map[string]int, 10)
fmt.Println(b)
b["jiayuan"] = 100
fmt.Println(b)
}