Golang 之(zhī)區分類型别名與類型定義 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

Golang 之(zhī)區分類型别名與類型定義

發表時(shí)間:2019-7-6

發布人(rén):融晨科技

浏覽次數:68

Golang 之(zhī)區分類型别名(Type Alias)與類型定義(Type define)

  • 一、類型别名(Type Alias)、類型定義是(shì)什麽?
  • 二、區分類型别名與類型定義
    • 類型定義

  • 類型别名
  • 類型定義
  • 區分類型别名、類型定義
  • 非本地(dì / de)類型不(bù)能定義方法

一、類型别名(Type Alias)、類型定義是(shì)什麽?

類型别名 是(shì) Go 1.9 版本添加的(de)新功能。主要(yào / yāo)應用于(yú)代碼升級、工程重構、遷移中類型的(de)兼容性問題。C/C++ 語言中,代碼的(de)重構升級可以(yǐ)使用宏快速定義新的(de)代碼。Go 語言中并未選擇通過宏,而(ér)是(shì)選擇通過類型别名解決重構中最複雜的(de)類型名變更問題。

在(zài) Go 1.9 版本之(zhī)前内建類型定義的(de)代碼如下:
  type byte uint8
  type rune int32
在(zài)Go 1.9 版本之(zhī)後内建類型定義的(de)代碼如下:
  type byte = uint8
  type rune = int32
通過以(yǐ)上(shàng)可以(yǐ)看出(chū)這(zhè)個(gè)修改就(jiù)是(shì)配合類型别名進行修改的(de)。

二、區分類型别名與類型定義

類型别名規定:Type Alias隻是(shì)Type 的(de)别名,本質上(shàng)Type Alias 與Type是(shì)同一個(gè)類型,即基本數據類型是(shì)一緻的(de)。好比如我們小時(shí)家裏人(rén)給我們起的(de)小名,上(shàng)學後英語老師給起的(de)英文名字,但是(shì)這(zhè)個(gè)名字都是(shì)指的(de)我們自己。
表面上(shàng)看類型别名與類型定義隻有一個(gè)等号的(de)差異("="),實際上(shàng)的(de)差異我們通過一段簡短的(de)代碼更爲(wéi / wèi)深刻的(de)理解二者之(zhī)間的(de)差異,如下代碼所示;
package main

import "fmt"

// 自定義類型myInt,基本類型是(shì)int
type myInt int

//将 int 類型取一個(gè)别名intAlias
type intAlias = int

func main() {
	//聲明 a變量爲(wéi / wèi)自定義 myInt 類型
	var a myInt
	// 輸出(chū) a 的(de)類型 和(hé / huò)默認值
	fmt.Printf("a Type: %T, value: %d\n", a, a)

	//聲明 b變量爲(wéi / wèi) intAlias 類型
	var b intAlias
	// 輸出(chū) b 的(de)類型 和(hé / huò)默認值
	fmt.Printf("b Type: %T, value: %d\n", b, b)
}

== 輸出(chū)結果 ==:
a Type: main.myInt, value: 0
b Type: int, value: 0
  • 從上(shàng)面的(de)結果我們可以(yǐ)看出(chū),a 的(de)類型是(shì) main.myInt,表示main 包下定義的(de)myInt 類型。生成了(le/liǎo)新的(de)數據類型。
  • b 的(de)類型是(shì) int 。intAlias 類型隻會在(zài)代碼中存在(zài),編譯完成時(shí),不(bù)會有 intAlias 類型。

類型定義

類型定義:依據基本類型聲明一個(gè)新的(de)數據類型。

	// 新聲明一個(gè)變量c intAlias 類型
	var c intAlias
	c = a
	fmt.Printf("c Type: %T, value: %d\n", c, c)
	
OutPut Result:
 cannot use a (type myInt) as type int in assignment

從以(yǐ)上(shàng)可以(yǐ)看出(chū),變量 a 和(hé / huò) c 不(bù)是(shì)同一個(gè)類型,因此不(bù)能直接賦值;可以(yǐ)通過強制類型轉換,實現 修改爲(wéi / wèi) c=int(a)

相關案例查看更多