類型再定義:
type A int32
類型別名:
type A = int32
1,類型再定義的使用
類型再定義,一般用在為一個類型添加一個獨有的方法使用。再定義的類型,和原類型的方法,不再有交集。
以我們的http包為例:
package http
type HandlerFunc func(w ResponseWriter, r *Request)
func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
f(w, r)
}
2,類型別名的使用
類型別名,和原類型完全一樣,原類型的方法,別名類型也可以使用。
golang中兩個內置的類型別名的例子:
type byte = uint8
type rune = int32
類型別名的設計初衷,是為了解決代碼重構時,類型在包之間轉移時產生的問題。
別名在代碼重構中非常有用,例如以前使用的是p.T這個類型,重構過程中需要把它移到p1.T1,
這時只需要在p包中定義type T = p1.T1,這樣基本之前使用p.T的代碼都不用修改
類型別名的好處:
- 名字可以起的通俗易懂
- 需要修改數據類型時,只需要改原類型定義的那個地方。使用的地方都可以不用改動。
- 可以很方便的添加特有方法,以實現某些接口
當原始類型為不可導出(小寫)時,別名類型可以定義成導出(大寫)的
type t1 struct { //不可導出
S string
}
type T2 = t1 //可導出