您好,登錄后才能下訂單哦!
怎么在Golang中轉(zhuǎn)換自定義類型?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
golang可以做服務(wù)器端開(kāi)發(fā),但golang很適合做日志處理、數(shù)據(jù)打包、虛擬機(jī)處理、數(shù)據(jù)庫(kù)代理等工作。在網(wǎng)絡(luò)編程方面,它還廣泛應(yīng)用于web應(yīng)用、API應(yīng)用等領(lǐng)域。
轉(zhuǎn)換成實(shí)現(xiàn)了某個(gè)(些)接口的自定義類型
比如:sort包里面的IntSlice,是一個(gè)[]int的自定義類型,并且實(shí)現(xiàn)了sort.Interface接口,如下所示:
type IntSlice []int // 實(shí)現(xiàn)sort.Interface接口的方法 func (p IntSlice) Len() int { return len(p) } func (p IntSlice) Less(i, j int) bool { return p[i] < p[j] } func (p IntSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } // 一個(gè)便捷方法 func (p IntSlice) Sort() { Sort(p) }
當(dāng)我們需要對(duì)一個(gè)int切片進(jìn)行排序的時(shí)候,我們就可以直接把[]int]轉(zhuǎn)換成sort.IntSlice,然后直接調(diào)用Sort()方法。
ints := []int{1, 7, 2, 3, 8, 0} sort.IntSlice(ints).Sort()
典型的一個(gè)案例就是http.HandlerFunc,通過(guò)這個(gè)類型,可以使得一個(gè)普通函數(shù)成為一個(gè)Http處理器(handler)。
type HandlerFunc func(ResponseWriter, *Request) // 實(shí)現(xiàn)http.Handler接口的方法 func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) { f(w, r) }
只要某個(gè)函數(shù)f具有跟HandlerFunc一樣的函數(shù)簽名(signature),那么這個(gè)函數(shù)就可以被轉(zhuǎn)換成http.HandlerFunc。而
http.HandlerFunc又實(shí)現(xiàn)了http.Handler接口,那么這個(gè)函數(shù)f就可以被http服務(wù)器調(diào)用了。 func f(w ResponseWriter, r *Request) { //... } http.Handle("/args", http.HandlerFunc(f))
在Golang中,這種用法很普遍,可以使用更少的代碼實(shí)現(xiàn)與其他語(yǔ)言一樣的功能。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。