閱讀答案
我們使用命名的結構型別,比如說,
type Foo struct{
name string
email string
}
var y Foo
解碼來自網路的資料或引入一種新型別,該型別包含一組值和對這些值的操作
何時使用未命名型別?
var x struct{ name string email string }初始化變數識別符號的語法是什么
x?
uj5u.com熱心網友回復:
作為一個快速規則,如果您發現自己再次復制/鍵入結構定義,您不妨將其設為命名型別。畢竟,這就是名稱的全部意義;它們是多次參考同一事物的捷徑。為避免命名混亂,請嘗試在盡可能窄的范圍內宣告型別(例如,在使用它的函式范圍內)。
初始化的語法如下:
var x struct{
name string
email string
} = struct {
name string
email string
}{
name: "name",
email: "email",
}
可以縮短為
var x = struct {
name string
email string
}{
name: "name",
email: "email",
}
因為可以推斷出型別。
使用未命名型別的最佳時機是當您不必再次顯式參考該型別時。由于該型別沒有名稱,要明確參考它,您(通常)必須再次復制整個型別規范。例如,在分配新值時。
// reassign x
x = struct {
name string
email string
}{
name: "name2",
email: "email2",
}
這很快就會變得非常難看,尤其是對于較大的結構,并且重復的代碼在需要更新時會產生重復的作業。
您可以嘗試將其縮短如下:
// reassign x
x.name = "name2"
x.email = "email2"
然而,這應該被認為是錯誤的形式,因為不清楚其意圖是重新分配“x”的整個值還是只是改變一些選擇欄位。如果更新結構以添加更多欄位,則此代碼可能會在沒有警告的情況下變得不正確。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/452999.html
