2020-10-01:談談golang的空結構體。#福大大架構師每日一題#
uj5u.com熱心網友回復:
怎么轉到C++版了?空結構體和其它結構體一樣,只不過因為沒有成員,所以不占用記憶體(sizeof是0),且兩個空結構體物件的值相等(因為都沒有成員),而且針對空結構體申請記憶體,回傳都是一個固定地址(也就是地址不變, 比如 type T struct{} func (T *t) printAddr() {fmt.Printf("%p", t)} 使用時 var t1, t2 T t1.printAddr()和t2.printAddr()結果相同,也就是t1和t2是同一個地址)。
針對這些特點,盡量在一些不想占用記憶體的場合利用空結構體,比如channel通道(只需要傳遞一個發送接收信號,不需要實際資料);比如只需要呼叫物件的介面方法,并不需要物件擁有資料資訊(如上面的type T struct{} func (T *t) printAddr() {fmt.Printf("%p", t)} var t1 T sizeof(t1)不占用資料記憶體,但是可以呼叫t1的printAddr()),如果這些物件都存在集合里,可以很大程度節省記憶體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/147268.html
標籤:C++ 語言
上一篇:有趣的資料可視化
