亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

當函數具有接收器參數時,如何制作函數映射?

當函數具有接收器參數時,如何制作函數映射?

Go
九州編程 2022-06-13 15:10:53
我已經能夠為沒有接收器參數的方法制作函數映射。這是一個例子。var funcMap = map[string]func() bool {    "&" : And,}func And() bool {    return true && false}但是,如果我的函數有一個接收器參數,我怎么能將它添加到函數映射中呢?下面的代碼不起作用,但試圖顯示我想要做什么。type Operand struct {    Operator string    Arg1 interface{}    Arg2 interface{}}var funcMap = map[string]Operand.func() bool {    "&" : Operand.And,}func (o *Operand) And() bool {    return argToBool(o.Arg1) && argToBool(o.Arg2)}
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

我們可以創建一個帶有函數及其參數的結構,而不是使用函數創建映射


// Create a function type which takes desired params and return type

type myFunc func(interface{}, interface{})(bool) // Assuming return type as bool


// Create a struct

type workerStruct struct {

     WorkFunc   myFunc

     Arg1       interface{}

     Arg2       interface{}

}

使用帶有函數和參數的上述結構作為映射的值


funcMap := map[string]workerStruct{}


myStruct := workerStruct {

    WorkFunc : Operand,           // This would your input function

    Arg1     : myarg1,

    Arg2     : myarg2,

}


funcMap["&"] = myStruct


查看完整回答
反對 回復 2022-06-13
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

你只需要初始化你的結構:


o := Operand{

    Arg1: false,

    Arg2: true,

}


var funcMap = map[string]func() bool {

    "&" : o.And,

}


查看完整回答
反對 回復 2022-06-13
  • 2 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號