亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言支持泛型嗎

發布時間:2020-06-17 11:56:33 來源:億速云 閱讀:383 作者:鴿子 欄目:編程語言

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

內置的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不支持泛型嗎?的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昭通市| 太和县| 望城县| 黄浦区| 武隆县| 鄄城县| 汕头市| 将乐县| 秀山| 水富县| 凤台县| 临夏县| 武定县| 方正县| 彭州市| 洪洞县| 邓州市| 镇雄县| 彭阳县| 无为县| 茶陵县| 崇左市| 伽师县| 黔西| 建湖县| 诸城市| 留坝县| 陕西省| 图木舒克市| 嘉兴市| 花莲市| 临夏县| 石渠县| 福鼎市| 永登县| 宝兴县| 崇阳县| 四子王旗| 中卫市| 偃师市| 寿宁县|