第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Go 中的類型別名與類型定義

Go 中的類型別名與類型定義

Go
泛舟湖上清波郎朗 2023-06-05 09:12:30
我在代碼中偶然發(fā)現(xiàn)了這種類型別名:type LightSource = struct {  R, G, B, L float32  X, Y, Z, A float32  //...}我的問題是:使用這樣的類型別名來定義 astruct而不是這樣做的原因是什么?type LightSource struct {  R, G, B, L float32  //...etc}
查看完整描述

3 回答

?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊

在這種情況下,我假設(shè)這是錯(cuò)誤完成的——第一種選擇“匿名”定義了一個(gè)類型,然后為其分配了一個(gè)別名,因此兩種情況下的最終結(jié)果是相同的,但第二種選擇仍然是唯一正確的選擇。

類型別名僅在少數(shù)情況下有用,例如,如此處所寫,它們可用于大規(guī)模重構(gòu)。


查看完整回答
反對 回復(fù) 2023-06-05
?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

我發(fā)現(xiàn)類型別名對可讀性很有用。例如,在測試中,您可能會像這樣比較 JSON 解碼器的輸出:

reflect.DeepEqual(r,?map[string]interface{}{"a":?map[string]interface{}{"b":?42.0}})

但您可以使用類型別名來提高可讀性:

type?JsonObject?=?map[string]interface{}
...
reflect.DeepEqual(r,?JsonObject{"a":?JsonObject{"b":?42.0}})

因?yàn)?DeepEqual 使用反射來比較類型(和值),所以使類型別名成為類型定義(通過刪除 = 字符)將導(dǎo)致 DeepEqual 失敗。


查看完整回答
反對 回復(fù) 2023-06-05
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

為了補(bǔ)充 Rob64 的回答,他指出最終結(jié)果是相同的,但不要誤會您最終會得到兩種不同類型的事實(shí)。


type LightSource = struct { // Type struct

  R, G, B, L float32

  X, Y, Z, A float32

  //...

}

type LightSource struct { // Type LightSource

  R, G, B, L float32

  //...etc

}

我覺得你最終會得到不同的類型這一事實(shí)有很多困惑,這意味著如果你在代碼中的某個(gè)地方強(qiáng)制執(zhí)行類型 A,并且你使用錯(cuò)誤的類型別名方式,你將結(jié)束對您的“類型別名”絕對零限制;如果您最終創(chuàng)建了類型別名,最終目標(biāo)實(shí)際上是區(qū)分您的類型,但如果您犯了這個(gè)錯(cuò)誤,那顯然是無效的。


查看完整回答
反對 回復(fù) 2023-06-05
  • 3 回答
  • 0 關(guān)注
  • 172 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號