gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

Go語言類型別名是什么

在Go語言中,類型別名就是為已存在的“類型”定義一個別名,可以使用type關鍵字來定義,語法“type TypeAlias = Type”。類型別名是Go 1.9版本添加的新功能,主要用于解決代碼升級、遷移中存在的類型兼容性問題;在 C/C++ 語言中,代碼重構升級可以使用宏快速定義一段新的代碼,Go語言中沒有選擇加入宏,而是解決了重構中最麻煩的類型名變更問題。

Go語言類型別名是什么

本教程操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

Go語言 類型別名是什么

Golang 中類型別名就是為已存在的 類型 定義一個別名。Golang 中類型別名使用 type 關鍵字來定義。

語法

type TypeAlias = Type
登錄后復制

登錄后復制

參數

參數 描述
type 定義類型別名使用的關鍵字。
TypeAlias Type 的別名。
Type 需要起別名的類型。

類型別名是 Go 1.9 版本添加的新功能,主要用于解決代碼升級、遷移中存在的類型兼容性問題。在 C/C++ 語言中,代碼重構升級可以使用宏快速定義一段新的代碼,Go語言中沒有選擇加入宏,而是解決了重構中最麻煩的類型名變更問題。

在 Go 1.9 版本之前定義內建類型的代碼是這樣寫的:

type byte uint8 type rune int32
登錄后復制

而在 Go 1.9 版本之后變為:

type byte = uint8 type rune = int32
登錄后復制

這個修改就是配合類型別名而進行的修改。

區分類型別名與類型定義

定義類型別名的寫法為:

type TypeAlias = Type
登錄后復制

登錄后復制

類型別名規定:TypeAlias 只是 Type 的別名,本質上 TypeAlias 與 Type 是同一個類型,就像一個孩子小時候有小名、乳名,上學后用學名,英語老師又會給他起英文名,但這些名字都指的是他本人。

類型別名與類型定義表面上看只有一個等號的差異,那么它們之間實際的區別有哪些呢?下面通過一段代碼來理解。

package main import (     "fmt" ) // 將NewInt定義為int類型 type NewInt int // 將int取一個別名叫IntAlias type IntAlias = int func main() {     // 將a聲明為NewInt類型     var a NewInt     // 查看a的類型名     fmt.Printf("a type: %Tn", a)     // 將a2聲明為IntAlias類型     var a2 IntAlias     // 查看a2的類型名     fmt.Printf("a2 type: %Tn", a2) }
登錄后復制

代碼運行結果:

a type: main.NewInt a2 type: int
登錄后復制

代碼說明如下:

  • 第 8 行,將 NewInt 定義為 int 類型,這是常見的定義類型的方法,通過 type 關鍵字的定義,NewInt 會形成一種新的類型,NewInt 本身依然具備 int 類型的特性。

  • 第 11 行,將 IntAlias 設置為 int 的一個別名,使用 IntAlias 與 int 等效。

  • 第 16 行,將 a 聲明為 NewInt 類型,此時若打印,則 a 的值為 0。

  • 第 18 行,使用%T格式化參數,打印變量 a 本身的類型。

  • 第 21 行,將 a2 聲明為 IntAlias 類型,此時打印 a2 的值為 0。

  • 第 23 行,打印 a2 變量的類型。

結果顯示 a 的類型是 main.NewInt,表示 main 包下定義的 NewInt 類型,a2 類型是 int,IntAlias 類型只會在代碼中存在,編譯完成時,不會有 IntAlias 類型。

非本地類型不能定義方法

能夠隨意地為各種類型起名字,是否意味著可以在自己包里為這些類型任意添加方法呢?參見下面的代碼演示:

package main import (     "time" ) // 定義time.Duration的別名為MyDuration type MyDuration = time.Duration // 為MyDuration添加一個函數 func (m MyDuration) EasySet(a string) { } func main() { }
登錄后復制

代碼說明如下:

  • 第 8 行,為 time.Duration 設定一個類型別名叫 MyDuration。

  • 第 11 行,為這個別名添加一個方法。

編譯上面代碼報錯,信息如下:

cannot define new methods on non-local type time.Duration
登錄后復制

編譯器提示:不能在一個非本地的類型 time.Duration 上定義新方法,非本地類型指的就是 time.Duration 不是在 main 包中定義的,而是在 time 包中定義的,與 main 包不在同一個包中,因此不能為不在一個包中的類型定義方法。

解決這個問題有下面兩種方法:

  • 將第 8 行修改為 type MyDuration time.Duration,也就是將 MyDuration 從別名改為類型;

  • 將 MyDuration 的別名定義放在 time 包中。

在結構體成員嵌入時使用別名

當類型別名作為結構體嵌入的成員時會發生什么情況呢?請參考下面的代碼。

package main import (     "fmt"     "reflect" ) // 定義商標結構 type Brand struct { } // 為商標結構添加Show()方法 func (t Brand) Show() { } // 為Brand定義一個別名FakeBrand type FakeBrand = Brand // 定義車輛結構 type Vehicle struct {     // 嵌入兩個結構     FakeBrand     Brand } func main() {     // 聲明變量a為車輛類型     var a Vehicle         // 指定調用FakeBrand的Show     a.FakeBrand.Show()     // 取a的類型反射對象     ta := reflect.TypeOf(a)     // 遍歷a的所有成員     for i := 0; i < ta.NumField(); i++ {         // a的成員信息         f := ta.Field(i)         // 打印成員的字段名和類型         fmt.Printf("FieldName: %v, FieldType: %vn", f.Name, f.Type.             Name())     } }
登錄后復制

代碼輸出如下:

FieldName: FakeBrand, FieldType: Brand FieldName: Brand, FieldType: Brand
登錄后復制

代碼說明如下:

  • 第 9 行,定義商標結構。

  • 第 13 行,為商標結構添加 Show() 方法。

  • 第 17 行,為 Brand 定義一個別名 FakeBrand。

  • 第 20~25 行,定義車輛結構 Vehicle,嵌入 FakeBrand 和 Brand 結構。

  • 第 30 行,將 Vechicle 實例化為 a。

  • 第 33 行,顯式調用 Vehicle 中 FakeBrand 的 Show() 方法。

  • 第 36 行,使用反射取變量 a 的反射類型對象,以查看其成員類型。

  • 第 39~42 行,遍歷 a 的結構體成員。

  • 第 45 行,打印 Vehicle 類型所有成員的信息。

這個例子中,FakeBrand 是 Brand 的一個別名,在 Vehicle 中嵌入 FakeBrand 和 Brand 并不意味著嵌入兩個 Brand,FakeBrand 的類型會以名字的方式保留在 Vehicle 的成員中。

如果嘗試將第 33 行改為:

a.Show()
登錄后復制

編譯器將發生報錯:

ambiguous selector a.Show
登錄后復制

在調用 Show() 方法時,因為兩個類型都有 Show() 方法,會發生歧義,證明 FakeBrand 的本質確實是 Brand 類型。

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
黄色三级中文字幕| 特级黄色录像片| www.黄色网址.com| 日本a视频在线观看| 国产精品天天av精麻传媒| 日本精品免费视频| 亚欧美在线观看| 国产美女在线一区| 午夜免费一级片| 国产精品69页| 欧美视频免费播放| 国产在线视频在线| 亚洲一级片av| 国产aaaaa毛片| 精品视频在线观看一区| 久久免费看毛片| 在线观看免费的av| 在线播放av中文字幕| 青青在线视频观看| www.日本一区| 亚洲乱码中文字幕久久孕妇黑人| 日本手机在线视频| 欧美丰满熟妇bbbbbb百度| 青娱乐国产精品视频| 日日噜噜夜夜狠狠| 999香蕉视频| 日韩 欧美 高清| 亚洲欧美日本一区二区三区| 日韩 欧美 高清| 日本久久久久久久久久久久| 欧美极品欧美精品欧美图片| 永久免费的av网站| 四季av一区二区| 手机在线成人免费视频| 深夜黄色小视频| 婷婷中文字幕在线观看| 色婷婷成人在线| 91网址在线观看精品| 国产又粗又猛大又黄又爽| 免费观看黄色的网站| 91蝌蚪视频在线| 黄色网zhan| 又大又硬又爽免费视频| 97视频在线免费播放| 国产极品美女高潮无套久久久| 欧美爱爱视频网站| 91麻豆天美传媒在线| 日本免费一级视频| 亚洲 欧美 另类人妖| 欧美美女性视频| 污免费在线观看| 天堂8在线天堂资源bt| 国产成人无码精品久久久性色| 中文字幕 91| av7777777| 高清av免费看| 男人添女荫道口图片| 中国丰满人妻videoshd | 日韩欧美国产综合在线| 僵尸世界大战2 在线播放| 成人羞羞国产免费网站| 国内外成人免费在线视频| 亚洲五码在线观看视频| 999在线观看视频| 男人午夜视频在线观看| 北条麻妃在线视频观看| 欧美 日韩 国产 在线观看| 国产免费黄色av| 超碰在线资源站| 国产黄页在线观看| 不用播放器的免费av| 久久99久久久久久| 91人人澡人人爽人人精品| 日本中文字幕在线视频观看| 国内外成人免费在线视频| 日韩a∨精品日韩在线观看| 亚洲精品视频导航| 日本免费a视频| 亚洲综合激情视频| 日韩avxxx| 亚洲中文字幕无码av永久| 超碰超碰在线观看| 五月天激情视频在线观看| 精品无码国模私拍视频| 欧美日韩久久婷婷| 男女无套免费视频网站动漫| 蜜臀av无码一区二区三区| 成年丰满熟妇午夜免费视频| 久久黄色片网站| 日韩欧美xxxx| 霍思燕三级露全乳照| 手机在线视频你懂的| 在线免费观看视频黄| 99免费视频观看| 国产一区二区在线观看免费视频| 爽爽爽在线观看| 国产免费又粗又猛又爽| 婷婷丁香激情网| www.夜夜爽| 美女一区二区三区视频| 热久久精品国产| 男人天堂网视频| 亚洲男人天堂av在线| 中文字幕免费高清在线| 99精品视频免费版的特色功能| 欧美午夜性视频| 国产精品va在线观看无码| 亚洲爆乳无码精品aaa片蜜桃| 国模无码视频一区二区三区| 香港三级日本三级a视频| 日日碰狠狠躁久久躁婷婷| 蜜桃传媒一区二区三区| 97超碰青青草| 国产一区二区视频免费在线观看| 中国一级黄色录像| 欧美 国产 精品| 看一级黄色录像| www.射射射| 青青草原播放器| 米仓穗香在线观看| 国产 日韩 欧美在线| 免费高清在线观看免费| 午夜影院免费观看视频| 永久免费网站视频在线观看| 日韩亚洲欧美一区二区| 黄色免费福利视频| 中文字幕欧美人妻精品一区| 欧美大黑帍在线播放| 日本xxxx黄色| 亚洲天堂第一区| 北条麻妃69av| www.偷拍.com| 日韩国产欧美亚洲| 小泽玛利亚av在线| 116极品美女午夜一级| 天天综合成人网| 青青青青在线视频| av无码精品一区二区三区| 日本成人性视频| 国产自偷自偷免费一区 | 欧美在线观看视频免费| 国产乱子伦农村叉叉叉| 色国产在线视频| 男的插女的下面视频| 国产精品无码av无码| 男人日女人逼逼| 男女啪啪免费视频网站| 97超碰成人在线| 又粗又黑又大的吊av| 一区二区传媒有限公司| 中文字幕1234区| 国产男女激情视频| 日本一区午夜艳熟免费| 手机在线视频一区| 黄色国产小视频| www.日日操| 成人黄色大片网站| 亚洲高清在线不卡| xxxx一级片| 欧美女人性生活视频| 女人另类性混交zo| 日韩网站在线免费观看| 亚洲 欧美 日韩 国产综合 在线| www插插插无码视频网站| 99视频在线观看视频| 手机在线看福利| 玩弄japan白嫩少妇hd| 少妇无码av无码专区在线观看 | 丁香婷婷综合激情| 中国一级黄色录像 | 欧美韩国日本在线| 国产精品乱码久久久久| 精品少妇在线视频| 日本一本中文字幕| 久久黄色片视频| 欧美视频免费看欧美视频| 久久久无码中文字幕久...| av在线播放亚洲| 久久久亚洲国产精品| 国产69精品久久久久久久| 污污污污污污www网站免费| 免费日韩视频在线观看| 黄色a级三级三级三级| 日韩欧美不卡在线| 成年女人18级毛片毛片免费| 国产尤物av一区二区三区 | 日本成年人网址| 粉色视频免费看| 成年人网站免费视频| 欧美日韩中文字幕在线播放| 国产精品裸体瑜伽视频| 一级黄色在线播放| 亚洲激情在线观看视频| 无码日本精品xxxxxxxxx| 中国女人做爰视频| 搡的我好爽在线观看免费视频| 国产一级片黄色| 日韩亚洲在线视频| 精品丰满人妻无套内射| 国产小视频免费|