兄弟連go教程(7)自定義型別

尹成發表於2018-07-04

可將型別分為命名和未命名兩⼤大類。命名型別包括 bool、int、string 等,⽽而 array、
slice、map 等和具體元素型別、⻓長度等有關,屬於未命名型別。
具有相同宣告的未命名型別被視為同⼀一型別。
•具有相同基型別的指標。
•具有相同元素型別和⻓長度的 array。
•具有相同元素型別的 slice。
•具有相同鍵值型別的 map。
•具有相同元素型別和傳送⽅方向的 channel。
•具有相同欄位序列 (欄位名、型別、標籤、順序) 的匿名 struct。
•簽名相同 (引數和返回值,不包括引數名稱) 的 function。
•⽅方法集相同 (⽅方法名、⽅方法簽名相同,和次序⽆無關) 的 interface。

var a struct { x int `a` }
var b struct { x int `ab` }
// cannot use a (type struct { x int "a" }) as type struct { x int "ab" } in assignment
b = a

可⽤用 type 在全域性或函式內定義新型別。
func main() {
type bigint int64
var x bigint = 100
println(x)
}

新型別不是原型別的別名,除擁有相同資料儲存結構外,它們之間沒有任何關係,不會持
有原型別任何資訊。除⾮非⺫⽬目標型別是未命名型別,否則必須顯式轉換。
x := 1234
var b bigint = bigint(x) // 必須顯式轉換,除⾮非是常量。
var b2 int64 = int64(b)
var s myslice = []int{1, 2, 3} // 未命名型別,隱式轉換。
var s2 []int = s



尹成老師

QQ77025077 

微信18510341407

所有視訊在尹成學院

www.yinchengxueyuan.com

尹成百度雲請聯絡QQ475318423




相關文章