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)
}
相關文章
相關標籤/搜索