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

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Golang之空結(jié)構(gòu)體和零長(zhǎng)數(shù)組的實(shí)踐

作者:傅里葉、 更新時(shí)間: 2022-07-03 編程語(yǔ)言

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

// 必須用key來初始化結(jié)構(gòu)體
type NoUnkeyedLiterals struct{}

// 不允許結(jié)構(gòu)體比較
type DoNotCompare [0]func()

// 不允許結(jié)構(gòu)體拷貝、值傳遞
type DoNotCopy [0]sync.Mutex

type User struct {
	// 必須用key來初始化結(jié)構(gòu)體
	NoUnkeyedLiterals
	// 不允許結(jié)構(gòu)體比較
	DoNotCompare
	// 不允許結(jié)構(gòu)體拷貝、值傳遞
	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

欄目分類
最近更新