func testMutex() {
stu := &Stu{
name: "song",
age: "12",
s: Stu1{name: "stu1"},
}
stu.st1 = &Stu{
name: "i amstu.st1",
age: "",
s: Stu1{},
st1: nil,
}
// 获取第一个
fmt.Println((*Stu)(unsafe.Pointer(uintptr(unsafe.Pointer(stu)))).name)
i := *(*string)(unsafe.Pointer(uintptr(unsafe.Pointer(stu)) + unsafe.Sizeof("")))
// 获取第二个
fmt.Println(i)
// 获取第三个
ci := (*Stu1)(unsafe.Pointer(uintptr(unsafe.Pointer(stu)) + unsafe.Sizeof("") + unsafe.Sizeof("")))
fmt.Println(ci.name)
// 获取第四个
ci1 := *(*Stu)(unsafe.Pointer(uintptr(unsafe.Pointer(stu)) + unsafe.Sizeof("") + unsafe.Sizeof("") + unsafe.Sizeof(stu.s)))
fmt.Println(ci1)
}
type Stu struct {
name string
age string
s Stu1
st1 *Stu
}
type Stu1 struct {
name string
}
代码如上。 我发现 这样搞, 获取不到 Stu 里面的 st1 指针对象。 尴尬住了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.