账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    golang string slice作为函数参数传递的问题
    56
    0
    package main
    
    func Sample(args []string) {
        args = append(args, "D", "E")
    }
    
    func main() {
        args := []string{}
        args = append(args, "A","B","C")
            Sample(args)
        for _, arg := range args {    
            println(arg)
        }
    }

    比如在上面这个程序(https://play.golang.org/p/0Ch...)里,我希望Sample函数执行完成之后,args里面的结果是ABCDE,但是真实的结果是ABC。

    这跟我对slice的理解不一样啊。

    我试了一下,在Sample函数里是可以对里面的string做修改的,

    package main
    
    func Sample(args []string) {
        args[2] = "F"
    }
    
    func main() {
        args := []string{}
        args = append(args, "A","B","C")
        Sample(args)
        for _, arg := range args {    
            println(arg)
        }
    }

    上面这个程序(https://play.golang.org/p/Y81...)就把args的最后一个元素改成F了。

    还是说因为string也是变长的结构,所以函数在传參的时候就把args的长度固定住了。这是什么原理啊。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • Favorite.莉 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部