91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

沽源县| 策勒县| 江川县| 烟台市| 资中县| 神农架林区| 阿坝县| 晋宁县| 出国| 益阳市| 高尔夫| 普定县| 桂平市| 朝阳区| 马鞍山市| 定兴县| 清镇市| 海城市| 双桥区| 融水| 九江县| 崇州市| 夹江县| 甘洛县| 秦安县| 财经| 克什克腾旗| 莫力| 昆明市| 山东省| 金门县| 介休市| 辽阳市| 冕宁县| 宜春市| 乐亭县| 叶城县| 紫金县| 怀仁县| 麻栗坡县| 牙克石市|