我试图更好地理解 go。我为自己创建了一个小练习:将指针切片传递给函数并修改它。
这就是我想出的:
package main
import (
"fmt"
"unsafe"
)
func main() {
var data *[]byte
fillData(data)
fmt.Println((*data)[0:5])
}
func fillData(data *[]byte) {
b := []byte("hello")
fmt.Println(b[0:5])
fmt.Println(string(b[0:5]))
data = (*[]byte)(unsafe.Pointer(&b[0]))
}
但它给出了一个invalid memory address or nil pointer dereference错误。我知道我不会在实际代码中使用这样的东西,但我只是好奇如何传递切片并修改它而不返回它。
https://play.golang.org/p/_K5ltKKKNV
互换的青春
相关分类