The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
systemv

萌新求教一个语法问题(关于 slice)

  •  
  •   systemv ·
    PRO
    · Apr 13, 2020 · 1706 views
    This topic created in 2244 days ago, the information mentioned may be changed or developed.
    package main

    import "fmt"

    func main(){
    var a = []int{1,2,3}

    arr(a)

    fmt.Println(a)
    }

    func arr (a []int) {
    a[0] = 888
    fmt.Println("a=",a)

    }
    这里 mian 函数和 arr 函数 a 都是{888,2,3}
    说明 slice 是引用类型
    但是把 arr 函数语句换成 a = append ( a, 3 )
    这样只是在 arr 函数里追加了 3,但是 mian 中没有改变,这是为什么呢?
    izgnod
        1
    izgnod  
       Apr 13, 2020 via iPhone
    append 会扩容 slice,导致指针变了
    systemv
        2
    systemv  
    OP
    PRO
       Apr 14, 2020
    @izgnod 明白了,蟹蟹
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2792 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 10:09 · PVG 18:09 · LAX 03:09 · JFK 06:09
    ♥ Do have faith in what you're doing.