Golang append()受fmt.Println()影响的奇怪行为
发布时间:2020-12-16 09:25:49 所属栏目:大数据 来源:网络整理
导读:我注意到Golang的append()有一些奇怪的行为.我理解切片容量如何影响新的底层数组是否被分配的基本概念,但为什么我是否使用fmt.Println()后附加已经影响了追加的结果? package mainimport "fmt"func main() { a := []byte("AAA") b := append(a,[]byte("BBB"
我注意到Golang的append()有一些奇怪的行为.我理解切片容量如何影响新的底层数组是否被分配的基本概念,但为什么我是否使用fmt.Println()后附加已经影响了追加的结果?
package main import "fmt" func main() { a := []byte("AAA") b := append(a,[]byte("BBB")...) fmt.Println(" a: ",string(a)," b: ",string(b)) c := append(a,[]byte("CCC")...) fmt.Println(" a: ",string(b)," c: ",string(c)) fmt.Println(&b) //try commenting this out and in and running the program } 链接到此处运行代码:https://play.golang.org/p/jJ-5ZxTBIn 解决方法
你是对的:
那是因为 The Go Playground版旧(go1.6.2),使用新版本. 正确的输出(使用go版本go1.7rc6)是: a: AAA b: AAABBB a: AAA b: AAACCC c: AAACCC 1- The Go Playground(go1.6.2): package main import "fmt" func main() { a := make([]byte,100,1000) a = []byte("AAA") b := append(a,string(c)) //fmt.Println(&b) //try commenting this out and in and running the program } 输出: a: AAA b: AAABBB a: AAA b: AAABBB c: AAACCC 2- Go Playground(go1.6.2): package main import "fmt" func main() { a := make([]byte,string(c)) fmt.Println(&b) //try commenting this out and in and running the program } 输出: a: AAA b: AAABBB a: AAA b: AAACCC c: AAACCC &[65 65 65 67 67 67] 使用go版本go1.7rc6: package main import "fmt" func main() { a := make([]byte,string(c)) //fmt.Println(&b) //try commenting this out and in and running the program } 输出: a: AAA b: AAABBB a: AAA b: AAACCC c: AAACCC (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |