Golang團隊認為在類型系統和運行時的復雜性花費太大,還沒找到可以和這個復雜性相抵的良好設計。

成都創新互聯專注于企業成都營銷網站建設、網站重做改版、尼開遠網站定制設計、自適應品牌網站建設、成都h5網站建設、商城建設、集團公司官網建設、成都外貿網站建設公司、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為尼開遠等各大城市提供網站開發制作服務。
內置的map和slice其實都有泛型的味道,加上可以用interface{}來構造容器,可以達到泛型的效果。所以目前為止還沒有直接的支持泛型。
我們這里打算以一些例子來講解Golang中如何處理這個問題。
首先,我們看一個冒泡排序的問題。針對整型數組切片的排序。
package main
import (
"fmt"
)
func bubbleSort(array []int) {
for i := 0; i < len(array); i++ {
for j := 0; j < len(array)-i-1; j++ {
if array[j] > array[j+1] {
array[j], array[j+1] = array[j+1], array[j]
}
}
}
}
func main() {
a1 := []int{3, 2, 6, 10, 7, 4, 6, 5}
bubbleSort(a1)
fmt.Println(a1)
}上面的例子輸出為:
[2 3 4 5 6 6 7 10]
那么,我們如果希望這個bubbleSort能夠同時支持float類型數據排序,或者是按照字符串的長度來排序應該怎么做呢?
在其他的例如java語言中,我們可以將bubbleSort定義為支持泛型的排序,但是Go里面就不行了。為了達到這個目的,我們可以使用interface來實現相同的功能。
針對上面的排序問題,我們可以分析一下排序的步驟:
查看切片長度,以用來遍歷元素(Len);
比較切片中的兩個元素(Less);
根據比較的結果決定是否交換元素位置(Swap)。
到這里,或許你已經明白了,我們可以把上面的函數分解為一個支持任意類型的接口,任何其他類型的數據只要實現了這個接口,就可以用這個接口中的函數來排序了。
以上就是golang不支持泛型嗎?的詳細內容,更多請關注創新互聯其它相關文章!
文章題目:go語言支持泛型嗎
網站地址:http://www.js-pz168.com/article34/jeedse.html
成都網站建設公司_創新互聯,為您提供網站設計、外貿建站、標簽優化、Google、網站排名、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯