類型再定義:
type A int32
類型別名:
type A = int32
1蚂维,類型再定義的使用
類型再定義背捌,一般用在為一個(gè)類型添加一個(gè)獨(dú)有的方法使用毙籽。再定義的類型,和原類型的方法毡庆,不再有交集坑赡。
以我們的http包為例:
package http
type HandlerFunc func(w ResponseWriter, r *Request)
func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
f(w, r)
}
2,類型別名的使用
類型別名么抗,和原類型完全一樣毅否,原類型的方法,別名類型也可以使用蝇刀。
golang中兩個(gè)內(nèi)置的類型別名的例子:
type byte = uint8
type rune = int32
類型別名的設(shè)計(jì)初衷螟加,是為了解決代碼重構(gòu)時(shí),類型在包之間轉(zhuǎn)移時(shí)產(chǎn)生的問(wèn)題吞琐。
別名在代碼重構(gòu)中非常有用捆探,例如以前使用的是p.T這個(gè)類型,重構(gòu)過(guò)程中需要把它移到p1.T1,
這時(shí)只需要在p包中定義type T = p1.T1,這樣基本之前使用p.T的代碼都不用修改
類型別名的好處:
- 名字可以起的通俗易懂
- 需要修改數(shù)據(jù)類型時(shí)站粟,只需要改原類型定義的那個(gè)地方黍图。使用的地方都可以不用改動(dòng)。
- 可以很方便的添加特有方法奴烙,以實(shí)現(xiàn)某些接口
當(dāng)原始類型為不可導(dǎo)出(小寫(xiě))時(shí)雌隅,別名類型可以定義成導(dǎo)出(大寫(xiě))的
type t1 struct { //不可導(dǎo)出
S string
}
type T2 = t1 //可導(dǎo)出