第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在golang中為泛型參數(shù)編寫func

如何在golang中為泛型參數(shù)編寫func

Go
慕運(yùn)維8079593 2021-09-10 15:24:25
我正在嘗試編寫一個(gè)函數(shù)Map,以便它可以處理所有類型的數(shù)組。// Interface to specify generic type of array.type Iterable interface {}func main() {    list_1 := []int{1, 2, 3, 4}    list_2 := []uint8{'a', 'b', 'c', 'd'}    Map(list_1)    Map(list_2)}// This function prints the every element for// all []types of array.func Map(list Iterable) {    for _, value := range list {        fmt.Print(value)    }}但它會(huì)引發(fā)編譯時(shí)錯(cuò)誤。19: cannot range over list (type Iterable)錯(cuò)誤是正確的,因?yàn)閞ange需要數(shù)組、指向數(shù)組的指針、切片、字符串、映射或通道允許接收操作,這里的類型是Iterable。我認(rèn)為我面臨的問題是將參數(shù)類型轉(zhuǎn)換Iterable為數(shù)組類型。請建議,我如何使用我的函數(shù)來處理通用數(shù)組。
查看完整描述

2 回答

?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

正如 Rob Pike 在此線程中提到的

是否可以在 Go 類型開關(guān)中表達(dá)“任何映射”、“任何數(shù)組”或“任何切片”?

否 。靜態(tài)類型必須是精確的。
空接口實(shí)際上是一種類型,而不是通配符。

您只能迭代特定類型的列表,例如具有已知功能的接口。
您可以看到一個(gè)示例,其中包含“我們可以在 go 中編寫通用數(shù)組/切片重復(fù)數(shù)據(jù)刪除嗎? ”

即使使用反射,interface{}本線程所示,傳遞切片也容易出錯(cuò)(請參閱此示例)。


查看完整回答
反對 回復(fù) 2021-09-10
?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

您對 Map 的定義有些不完整。聲明它的通常方法是使用 mapper 方法。您的示例至少可以通過這種方式實(shí)現(xiàn)


package main


import "fmt"


// Interface to specify something thet can be mapped.

type Mapable interface {

}



func main() {

    list_1 := []int{1, 2, 3, 4}

    list_2 := []string{"a", "b", "c", "d"}

    Map(print, list_1)

    Map(print, list_2)

}

func print(value Mapable){

fmt.Print(value)

}


// This function maps the every element for

// all []types of array.

func Map(mapper func(Mapable), list ... Mapable) {

    for _, value := range list {

        mapper(value)

    }

}

它有效。需要說它有點(diǎn)無類型。因?yàn)椴唬珿o 沒有 Hindley-Milner 意義上的“泛型”


查看完整回答
反對 回復(fù) 2021-09-10
  • 2 回答
  • 0 關(guān)注
  • 206 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)