在 golang 中導出(或不導出)匿名結構中的字段有什么區別嗎?換句話說,以下兩個代碼塊是否有任何不同?考慮到它是一個匿名結構,您不能在變量本身之外使用該結構,因此我假設大寫 F 在編譯時不會產生影響(沒有編譯速度或運行時內存差異)。區塊 1:var test = struct { FieldOne string FieldTwo string} { FieldOne: "some string", FieldTwo: "some other string",}區塊 2:var test = struct { fieldOne string fieldTwo string} { fieldOne: "some string", fieldTwo: "some other string",}
2 回答

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
當然可以,由于反思。嘗試json.Marshal(test)
在每次聲明后致電。在第一種情況下,您將得到{"FieldOne":"some string","FieldTwo":"some other string"}
,但在第二種情況下,您將得到{}
。這是因為 JSON 封送拆收器僅“看到”導出的結構字段。更一般地說,即使 的類型test
沒有名稱,也不意味著該類型本身不可訪問;任何有反射的東西都可以訪問它。

藍山帝景
TA貢獻1843條經驗 獲得超7個贊
在 golang 中導出(或不導出)匿名結構中的字段有什么區別嗎?
json.Marshal
當然,所有通常的規則都適用(例如,如果您嘗試將結構提供給 ,您會看到差異)。
- 2 回答
- 0 關注
- 119 瀏覽
添加回答
舉報
0/150
提交
取消