数组切片:
func main() {
m := make(map[string]interface{}, 0)
l := make([]int64, 0)
m["hello"] = l
l = append(l,1)
fmt.Println(m["hello"]) //[]
}
func main() {
l := make([]int64, 0)
l = append(l, 10)
l1 := l
l1 = append(l1, 20)
fmt.Println(l,l1) //[10] [10 20]
}
map:
func main() {
m := make(map[string]interface{}, 0)
l := map[string]interface{}{
"hello":"hi",}
m["hello"] = l
l["hi"]=1
fmt.Println(m["hello"]) //map[hello:hi hi:1]
}
func main() {
m := make(map[string]interface{}, 0)
m["hello"] = 1
n := m
n["hello"] = 2
fmt.Println(n,m) //map[hello:2] map[hello:2]
}
struct:
type A struct {
B int
}
func main() {
m := make(map[string]interface{}, 0)
l := A{1}
m["hello"] = l
l.B = 2
fmt.Println(m["hello"]) //{1}
}
func main() {
l := A{1}
l1 := l
l.B = 2
fmt.Println(l1,l) //{1} {2}
}
总结: 1. golang 切片和struct的赋值为值拷贝,map为引用拷贝。 2. 如果要做到修改对象,使用数组指针。