为什么[]byte不能返回正确的值

wzywsk · · 2874 次点击
polaris
社区,需要你我一同完善!
得这样: package main import ( "fmt" ) func Read(buff *[]byte) (n int, err error) { temp := []byte("haha") *buff = temp return 4, nil } func main() { buff := make([]byte, 5) n, _ := Read(&buff) fmt.Println(string(buff[:n]), n) } 你在 Read 中让 参数buff 引用了新建的 []byte('haha'),而原来的并没有改变
#1
更多评论
这一句`buff = temp`不是值拷贝。 package main import ( "fmt" ) func Read(buff []byte) (n int, err error) { temp := []byte("haha") copy(buff, temp) return 4, nil } func main() { buff := make([]byte, 5) n, _ := Read(buff) fmt.Println(string(buff[:n]), n) }
#2