我正在做一些關(guān)于 unsafe.Pointer 的測(cè)試。假設(shè)TestFun是一個(gè)公共庫函數(shù),那么“Person”結(jié)構(gòu)體不應(yīng)該出現(xiàn)在這個(gè)函數(shù)中type Person struct { Name string}func main() { p := &Person{} p.Name = "TestName" TestFun(p)}func TestFun(val interface{}) { // I want to convert interface{} to unsafe.Pointer var pointer unsafe.Pointer // This Line compile error //pointer = unsafe.Pointer(val) // This is ok, but "Person" appears. This function is a common function, "Person" should not appear // pointer = unsafe.Pointer(val.(*Person)) println(pointer)}我怎么能這樣做呢?
1 回答

慕森卡
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
而不是unsafe.Pointer(val)使用unsafe.Pointer(&val). 因?yàn)樗邮苤羔槨?/p>
package main
import (
"unsafe"
)
type Person struct {
Name string
}
func main() {
p := &Person{}
p.Name = "TestName"
TestFun(p)
}
func TestFun(val interface{}) {
// I want to convert interface{} to unsafe.Pointer
var pointer unsafe.Pointer
pointer = unsafe.Pointer(&val)
println(pointer)
u := (*interface{})(pointer)
p := (*u).(*Person)
println(p.Name)
}
- 1 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報(bào)
0/150
提交
取消