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

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

如何在 Go 中使用中綴(比較)運算符作為參數(shù)

如何在 Go 中使用中綴(比較)運算符作為參數(shù)

Go
烙印99 2023-03-29 15:30:38
在 GoLang 中,可以使用函數(shù)作為參數(shù),例如在這個簡單的例子中,根據(jù)小于或等于 ( )<=或大于或等于運算符 ( >=)比較兩個數(shù)字package mainfunc leq(x, y int) bool {    return x <= y}func geq(x, y int) bool {    return x >= y}func compare(x, y int, comparator func(int, int) bool) bool {    return comparator(x, y)}func main() {    println(compare(3, 5, leq)) //true    println(compare(5, 3, leq)) //false    println(compare(3, 5, geq)) //false    println(compare(5, 3, geq)) //true}有沒有辦法將中綴運算符而不是函數(shù)作為函數(shù)參數(shù)?例如:func compare(x, y int, comparator <something here>) bool {    return comparator(x, y)}func main() {    println(compare(3, 5, <=)) //true    println(compare(5, 3, <=)) //false    println(compare(3, 5, >=)) //false    println(compare(5, 3, >=)) //true}或者我最好的選擇是像第一個例子那樣為運算符編寫包裝器嗎?此外,如果上述情況可行,是否可以將中綴運算符參數(shù)與中綴語法一起使用?例如func compare(x, y int, c <something here>) bool {    return x c y}
查看完整描述

1 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊

不,根據(jù)Go 語言規(guī)范,這不是一個正確的程序。


函數(shù)類型被定義為包含一個參數(shù)列表,其中每個參數(shù)都包含一個參數(shù)聲明:[ IdentifierList ] [ "..." ] Type。

這要求函數(shù)的所有參數(shù)都具有類型,指定為 production?Type,因此:

TypeLit?=?ArrayType?|?StructType?|?PointerType?|?FunctionType?|?InterfaceType?|
??????????SliceType?|?MapType?|?ChannelType

內(nèi)置操作數(shù)(例如相等和比較運算符)是語言內(nèi)部的,不會在此處公開為可能的類型文字。

此外,函數(shù)調(diào)用規(guī)范要求調(diào)用中的參數(shù)是單值表達(dá)式。二元運算符本身不是表達(dá)式。

因此,您不能將“中綴”運算符作為參數(shù)傳遞給函數(shù)調(diào)用。您應(yīng)該定義自己的接口或函數(shù)類型來包裝運算符,并將其傳遞給您的比較函數(shù)。


查看完整回答
反對 回復(fù) 2023-03-29
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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