Go 学习:引用类型与值类型

2019-08-06  本文已影响0人  Shrike_55e0
Golang中只有三种引用类型:slice(切片)、map(字典)、channel(管道);
引用类型
值类型
package main

import "fmt"

func main(){
    a := [5]int{2, 3, 4, 5, 6} //定义一个数组
    b := a
    fmt.Println(a,b) //[2 3 4 5 6] [2 3 4 5 6]
    b[2] = 77
    fmt.Println(a,b) //[2 3 4 5 6] [2 3 77 5 6]
}

上述定义的数组,b是a 的值拷贝,b值改变不影响a

package main

import "fmt"
func main(){
    a := []int{2, 3, 4, 5, 6} //切片
    b := a
    fmt.Println(a, b) //[2 3 4 5 6] [2 3 4 5 6]
    b[2] = 77
    fmt.Println(a, b) // [2 3 77 5 6] [2 3 77 5 6]
}
上述定义的切片,b是a 的引用, b值改变a
package main

import "fmt"
func main(){
    a := map[string]string{
        "01": "i am 01",
        "02": "i am 02",
        "03": "i am 03",
    }
    b := a
    fmt.Println(a, b) //map[02:i am 02 03:i am 03 01:i am 01] map[03:i am 03 01:i am 01 02:i am 02]
    b["02"] = "i am b"
    fmt.Println(a, b) //map[01:i am 01 02:i am b 03:i am 03] map[01:i am 01 02:i am b 03:i am 03]

上一篇 下一篇

猜你喜欢

热点阅读