兄弟連go教程(4)型別-引用及轉換

尹成發表於2018-07-04
引⽤用型別包括 slice、map 和 channel。它們有複雜的內部結構,除了申請記憶體外,還需
要初始化相關屬性。
內建函式 new 計算型別⼤大⼩小,為其分配零值記憶體,返回指標。⽽而 make 會被編譯器翻譯
成具體的建立函式,由其分配記憶體和初始化成員結構,返回物件⽽而⾮非指標。
a := []int{0, 0, 0} // 提供初始化表示式。
a[1] = 10
b := make([]int, 3) // makeslice
b[1] = 10
c := new([]int)
c[1] = 10 // Error: invalid operation: c[1] (index of type *[]int)


不⽀支援隱式型別轉換,即便是從窄向寬轉換也不⾏行。


var b byte = 100
// var n int = b // Error: cannot use b (type byte) as type int in assignment
var n int = int(b) // 顯式轉換


使⽤用括號避免優先順序錯誤。
*Point(p) // 相當於 *(Point(p))
(*Point)(p)
<-chan int(c) // 相當於 <-(chan int(c))
(<-chan int)(c)



同樣不能將其他型別當 bool 值使⽤用。
a := 100
if a { // Error: non-bool a (type int) used as if condition
println("true")
}



尹成老師

QQ77025077 

微信18510341407

所有視訊在尹成學院

www.yinchengxueyuan.com

尹成百度雲請聯絡QQ475318423






相關文章