go語言支持泛型嗎-創新互聯

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

成都創新互聯公司成立于2013年,是專業互聯網技術服務公司,擁有項目成都網站設計、成都網站制作網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元下陸做網站,已為上家服務,為下陸各地企業和個人服務,聯系電話:18982081108

內置的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語言支持泛型嗎-創新互聯
URL分享:http://m.kartarina.com/article20/cdcpjo.html

成都網站建設公司_創新互聯,為您提供靜態網站營銷型網站建設響應式網站全網營銷推廣企業網站制作微信小程序

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化
主站蜘蛛池模板: 中文字幕人妻无码系列第三区| 精品无码人妻一区二区三区18| 精品亚洲成α人无码成α在线观看| 国产精品无码专区在线播放| 亚洲一区爱区精品无码| 久久久久久久人妻无码中文字幕爆| 无码专区国产精品视频| 亚洲V无码一区二区三区四区观看| 亚洲AV无码一区二区三区人 | 亚洲真人无码永久在线观看| 免费无码又爽又高潮视频| 中文字幕无码久久精品青草| 亚洲中文字幕无码av永久| 国产成人无码AV一区二区| 东京热HEYZO无码专区| 无码人妻精品一区二区三区久久| 爆乳无码AV一区二区三区| 亚洲一区无码中文字幕乱码| 成人无码A区在线观看视频| 亚洲AV色无码乱码在线观看| 无码日韩精品一区二区三区免费| 久久亚洲AV永久无码精品| 亚洲精品无码高潮喷水A片软| 日韩欧精品无码视频无删节| 亚洲桃色AV无码| 国产又爽又黄无码无遮挡在线观看| 亚洲av无码av在线播放| AA区一区二区三无码精片| 中国少妇无码专区| 最新中文字幕AV无码不卡| 无码毛片一区二区三区中文字幕| 亚洲中文无码mv| 无码无套少妇毛多69XXX| 亚洲av无码专区在线电影天堂 | 色欲狠狠躁天天躁无码中文字幕| 国产精品无码v在线观看| 无码 免费 国产在线观看91| 无码AⅤ精品一区二区三区| 亚洲精品无码久久久久AV麻豆| 无码国模国产在线观看| 免费无码又爽又黄又刺激网站|