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一区二区
日本福利视频导航| 午夜免费视频网站| 777久久精品一区二区三区无码 | 99久久久无码国产精品性色戒| 亚洲自偷自拍熟女另类| 亚洲啊啊啊啊啊| 天天干天天操天天做| 色综合av综合无码综合网站| 国产1区2区3区中文字幕| 一本一道久久a久久综合蜜桃| 日本黄网站免费| 六月丁香婷婷激情| 亚洲国产精品无码av| 青青在线免费视频| 男女视频在线观看网站| av亚洲天堂网| 成年人在线观看视频免费| 日韩免费一级视频| 日韩视频在线视频| 免费观看美女裸体网站| 99久热在线精品视频| 久久精品在线免费视频| 天堂网成人在线| 亚洲综合伊人久久| 秋霞在线一区二区| 五月天av影院| 色一情一乱一乱一区91| 国产内射老熟女aaaa| 欧美人与动牲交xxxxbbbb| 日韩不卡一二区| www.18av.com| www.日本在线播放| 国模无码视频一区二区三区| 性欧美大战久久久久久久| 97超碰在线人人| www.日本在线播放| av免费在线播放网站| 午夜在线观看av| 日韩a一级欧美一级| 久久久久亚洲av无码专区喷水| 黄色影视在线观看| 国产妇女馒头高清泬20p多| 免费观看日韩毛片| 天天操狠狠操夜夜操| 国内精品国产三级国产aⅴ久| 国产一区二区三区播放| 久久艹国产精品| 久久久免费视频网站| 中文字幕视频在线免费观看| www.午夜色| 北条麻妃在线视频观看| 少妇网站在线观看| 2021狠狠干| 成人av一级片| 国产高清999| 无码人妻丰满熟妇区96| 欧美又黄又嫩大片a级| 路边理发店露脸熟妇泻火| 777av视频| 小明看看成人免费视频| 成品人视频ww入口| 在线观看免费成人av| 中文字幕の友人北条麻妃| www黄色av| 日本福利视频网站| 亚洲欧美在线精品| 精品无码国产一区二区三区av| www.色就是色| 国产自产在线视频| 国产成年人在线观看| 毛片av免费在线观看| 警花观音坐莲激情销魂小说| 丰满人妻中伦妇伦精品app| 国产美女视频免费| 免费涩涩18网站入口| 久草热视频在线观看| 污免费在线观看| 欧美伦理片在线看| www.xxx麻豆| 国产系列第一页| 亚洲第一狼人区| 黄色动漫在线免费看| 日韩一级特黄毛片| 欧美日韩一区二区三区电影| 蜜臀av免费观看| 国产免费成人在线| 一卡二卡三卡视频| 亚洲一区 在线播放| 亚洲网中文字幕| 亚洲第一狼人区| 天堂中文视频在线| avav在线看| 中国丰满人妻videoshd| 国产91xxx| 国产片侵犯亲女视频播放| 91视频福利网| 亚洲一区二区中文字幕在线观看| 欧洲av无码放荡人妇网站| 国产中文字幕视频在线观看| 欧美午夜小视频| a级黄色片免费| 日韩一级特黄毛片| 妞干网视频在线观看| 免费日韩在线观看| 国产一区二区三区在线免费| 中文字幕第50页| 久久久久久久久久久久久国产| 在线观看视频黄色| 中文字幕の友人北条麻妃| 成人在线免费高清视频| 国产日产欧美一区二区| 久久观看最新视频| www.av91| 美女福利视频在线| 密臀av一区二区三区| www.超碰97.com| 97人人模人人爽人人澡| 中国黄色录像片| 精品视频在线观看一区| 日韩av一二三四区| 五月婷婷丁香综合网| 99精品视频国产| 日本男女交配视频| 精品这里只有精品| 老头吃奶性行交视频| 亚洲污视频在线观看| 一级做a爱视频| 日本福利视频一区| 免费观看精品视频| 不卡av免费在线| 中国 免费 av| 日本精品一区在线观看| 亚洲国产精品三区| 青青草视频国产| 欧美视频第三页| 一级片黄色免费| 欧美成人免费在线观看视频| 在线观看av网页| 久无码久无码av无码| 亚洲色图久久久| 国产欧美久久久久| 黄色aaa级片| 国产又粗又大又爽的视频| 欧美成人一区二区在线观看| 日韩成人av免费| 国产69精品久久久久999小说| 欧美精品aaaa| 欧美大黑帍在线播放| av网站在线不卡| 欧美深夜福利视频| 中文字幕在线视频一区二区三区 | 中文字幕一区二区三区四区五区人| 精品国产av无码一区二区三区 | 免费在线观看毛片网站| 视色,视色影院,视色影库,视色网| 人妻熟妇乱又伦精品视频| 不卡中文字幕在线观看| 欧美污视频网站| 免费网站永久免费观看| 九九热免费在线观看| 1024精品视频| 青青草国产免费| 亚洲av首页在线| 污污视频网站在线| 十八禁视频网站在线观看| 日韩精品手机在线观看| 五月激情婷婷在线| 国产aaaaa毛片| 日本一道本久久| 成年人网站国产| 亚洲五码在线观看视频| 色姑娘综合天天| 色婷婷综合网站| 日韩精品无码一区二区三区免费| 成人小视频在线观看免费| 国产资源中文字幕| 天天操狠狠操夜夜操| 精品999在线| www日韩在线观看| 无码少妇一区二区三区芒果| 人妻久久久一区二区三区| 亚洲五码在线观看视频| 久久天天东北熟女毛茸茸| 免费看啪啪网站| 经典三级在线视频| 国产经典久久久| 免费看日本黄色| 欧美激情视频免费看| 日韩网站在线免费观看| 天天夜碰日日摸日日澡性色av| 毛片在线视频观看| 国产精品久久久久9999爆乳| 女人被男人躁得好爽免费视频| 91视频 - 88av| 亚洲精品无码国产| 日韩精品xxxx| 日韩亚洲在线视频| 最新天堂中文在线| 99九九99九九九99九他书对| 日本中文字幕精品—区二区|