package main
import "log"
func main() {
// 值类型
// int float bool string 数组和结构体
// 声明了编译器就会为其分配内存,有初始默认值
// 赋值给另外的变量,就是在内存中进行了拷贝
var name string
stu1 := "lzh"
stu2 := stu1
log.Printf("%p, %p", &stu1, &stu2)
// 引用类型
// slice map chan
// 引用类型必须申请内存才可以使用
// make()就是给引用类型申请内存空间的 返回引用类型本身
nums := []int{1,2,3,4,5}
// 赋值就是把引用赋值给了对方
num1 := nums
// 两个切片底层指向的是一个数组,一个修改,其他也会变
num1[1] = 100
log.Println(name)
log.Printf("%p: %v", &nums, nums)
log.Printf("%p: %v", &num1, num1)
nums[1] = 1
dict1 := map[string]string{"name": "lzh"}
dict2 := dict1
dict2["name"] = "carp"
log.Printf("%p: %v", &dict1, dict1)
log.Printf("%p: %v", &dict2, dict2)
}