日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Golang之空結構體和零長數組的實踐

作者:傅里葉、 更新時間: 2022-07-03 編程語言

空結構體和零長數組(兩個復合類型)都僅僅是一個占位符,不占用空間,這里編譯器進行了優(yōu)化,如果結構體或數組的unsafe.sizeof=0則直接返回zerobase。

// 必須用key來初始化結構體
type NoUnkeyedLiterals struct{}

// 不允許結構體比較
type DoNotCompare [0]func()

// 不允許結構體拷貝、值傳遞
type DoNotCopy [0]sync.Mutex

type User struct {
	// 必須用key來初始化結構體
	NoUnkeyedLiterals
	// 不允許結構體比較
	DoNotCompare
	// 不允許結構體拷貝、值傳遞
	DoNotCopy
	Age     int
	Address 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{})
}

原文鏈接:https://blog.csdn.net/qq_34562093/article/details/122015607

相關推薦

欄目分類
最近更新