Go_02_值类型&引用类型

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)
}
原文地址:https://www.cnblogs.com/carp-li/p/15131819.html