美文网首页
golang 数组

golang 数组

作者: 夜空一起砍猩猩 | 来源:发表于2018-02-10 22:12 被阅读0次

    与C数组变量隐式作为指针使用不同,Go数组是值类型,赋值和传参操作都会复制整个数组数据。

    func test(x[2]int) {

      fmt.Printf("x: %p, %v\n", &x,x)

    }

    func main() {

      a:= [2]int{10,20}

      var b[2]int

      b=a

      fmt.Printf("a: %p, %v\n", &a,a)

      fmt.Printf("b: %p, %v\n", &b,b)

      test(a)

    }

    结果:

    a:0xc820076050, [10 20]

    b:0xc820076060, [10 20]

    x:0xc8200760a0, [10 20]


    如果需要,可改用指针或切片,以此避免数据复制。

    func test(x*[2]int) {

      fmt.Printf("x: %p, %v\n",x, *x)

      x[1] +=100

    }

    func main() {

      a:= [2]int{10,20}

      test(&a)

      fmt.Printf("a: %p, %v\n", &a,a)

    }

    结果:

    x:0xc8200741c0, [10 20]

    a:0xc8200741c0, [10 120]

    相关文章

      网友评论

          本文标题:golang 数组

          本文链接:https://www.haomeiwen.com/subject/tivhtftx.html