Golang之空结构体和零长数组的实践
生活随笔
收集整理的這篇文章主要介紹了
Golang之空结构体和零长数组的实践
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
空結構體和零長數組(兩個復合類型)都僅僅是一個占位符,不占用空間,這里編譯器進行了優化,如果結構體或數組的unsafe.sizeof=0則直接返回zerobase。
// 必須用key來初始化結構體 type NoUnkeyedLiterals struct{}// 不允許結構體比較 type DoNotCompare [0]func()// 不允許結構體拷貝、值傳遞 type DoNotCopy [0]sync.Mutextype User struct {// 必須用key來初始化結構體NoUnkeyedLiterals// 不允許結構體比較DoNotCompare// 不允許結構體拷貝、值傳遞DoNotCopyAge intAddress string }func main() {_ = &User{Age: 21, Address: "beijing"}fmt.Println(unsafe.Sizeof(NoUnkeyedLiterals{}))fmt.Printf("%p\n", &DoNotCopy{})fmt.Printf("%p\n", &NoUnkeyedLiterals{})fmt.Printf("%p\n", &DoNotCompare{}) } 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Golang之空结构体和零长数组的实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PaaS中OpenShift持久化存储的
- 下一篇: Golang之Go Module使用