zoukankan      html  css  js  c++  java
  • Go 中 切片的 深赋值 潜赋值,还有二维数组 在使用的时候 需要申请内存

    // 正常赋值
    a := []int{1, 2, 3, 4, 5}
    b := a
    b[0] = 10
    fmt.Println(a) // [10 2 3 4 5]
    fmt.Println(b) // [10 2 3 4 5]
    // 多维切片赋值
    a := [][]int{
    {1,2,3,4,5},
    {6,7,8,9,10},
    }
    b := a
    b[0][0] = 11
    fmt.Println(a) // [[11 2 3 4 5] [6 7 8 9 10]]
    fmt.Println(b) // [[11 2 3 4 5] [6 7 8 9 10]]
    // 多维切片 copy
    a := [][]int{ {1,2,3,4,5}, {6,7,8,9,10}, } b := make([][]int, len(a)) copy(b, a) b[0][0] = 11 fmt.Println(a) // [[11 2 3 4 5] [6 7 8 9 10]] fmt.Println(b) // [[11 2 3 4 5] [6 7 8 9 10]]
    // 单切片 json序列化 神拷贝
    a := []int{1, 2, 3, 4, 5} var b []int result, _ := json.Marshal(a) _ = json.Unmarshal(result, &b) b[0] = 10 fmt.Println(a) // [1 2 3 4 5] fmt.Println(b) // [10 2 3 4 5]
    // 多维切片 json 深拷贝
    a := [][]int{ {1,2,3,4,5}, {6,7,8,9,10}, } b := make([][]int, len(a)) result, _ := json.Marshal(a) _ = json.Unmarshal(result, &b) b[0][0] = 11 fmt.Println(a) // [[1 2 3 4 5] [6 7 8 9 10]] fmt.Println(b) // [[11 2 3 4 5] [6 7 8 9 10]]
    // 多维 切片 自主深拷贝
    a := []int{1, 2, 3, 4, 5} b := make([]int, len(a)) for key, value := range a{ b[key] = value } b[0] = 10 fmt.Println(a) // [1 2 3 4 5] fmt.Println(b) // [10 2 3 4 5]
    邮箱: 1090055252@qq.com
  • 相关阅读:
    BZOJ 3677 连珠线
    BZOJ 3676 回文串
    BZOJ 3675 序列分割
    BZOJ 4013 实验比较
    BZOJ 4011 落忆枫音
    使用Google BBR加速 VPS
    OSX编译安装Python3及虚拟开发环境Virtualenv
    OSX安装Mysql8.0
    OpenSSL编程之摘要
    OpenCA搭建
  • 原文地址:https://www.cnblogs.com/zhaoxianxin/p/14213466.html
Copyright © 2011-2022 走看看