3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
您不能將函數(shù)用作映射鍵。該語言規(guī)范明確表示:
必須為鍵類型的操作數(shù)完全定義比較運(yùn)算符 == 和 !=;因此鍵類型不能是函數(shù)、映射或切片。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
您不能將函數(shù)用作映射中的鍵:鍵類型必須具有可比性。
映射鍵可以是任何可比較的類型。語言規(guī)范對(duì)此進(jìn)行了精確定義,但簡而言之,可比較的類型是布爾值、數(shù)字、字符串、指針、通道和接口類型,以及僅包含這些類型的結(jié)構(gòu)或數(shù)組。值得注意的是,列表中沒有切片、映射和函數(shù);這些類型不能使用 == 進(jìn)行比較,并且不能用作映射鍵
根據(jù)您的具體用例,您可能使用的是接口。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
您可以使用reflect.
import (
"reflect"
"math"
)
func foo () {
table := make(map[uintptr] string)
table[reflect.ValueOf(math.Sin)] = "Sin"
table[reflect.ValueOf(math.Cos)] = "Cos"
println(table[reflect.ValueOf(math.Cos)])
}
- 3 回答
- 0 關(guān)注
- 241 瀏覽
添加回答
舉報(bào)