gengine icon indicating copy to clipboard operation
gengine copied to clipboard

map[string]interface{}指针传到dataContext,在做 if 字段判断一直出现panic,求解

Open ljzhou1577 opened this issue 2 years ago • 3 comments

const ( data_rule = \ rule "data rule" "a test" salience 10 begin println(up["status"]) if up["status"] == 1{ return true }else{ return false } end ` ) func Test_check(t *testing.T) { upDataMap := make(map[string]interface{}) busiz1 := []byte({"reference_id":2073666894,"status":1}) decoder1 := json.NewDecoder(bytes.NewReader(busiz1)) err := decoder1.Decode(&upDataMap) if err != nil { fmt.Printf("Unmarshal error, err: %+v", err) return } dataContext := context.NewDataContext() dataContext.Add("up", &upDataMap) ruleBuilder := builder.NewRuleBuilder(dataContext) err1 := ruleBuilder.BuildRuleFromString(data_rule) if err1 != nil { panic(err1) } eng := engine.NewGengine() err2 := eng.Execute(ruleBuilder, true) if err2 != nil { panic(err2) } fmt.Printf("Finish") }`

ljzhou1577 avatar May 06 '22 03:05 ljzhou1577

if up["status"] == 1,这个地方一直出现panic,求解

ljzhou1577 avatar May 06 '22 03:05 ljzhou1577

if up["status"] == 1,这个地方一直出现panic,求解

up["status"] 返回的是interface,你可以试试把upDataMap := make(map[string]interface{}) 改成 upDataMap := make(map[string]int)

daniel-007 avatar Jun 06 '22 06:06 daniel-007

源码中的if判断只能用于number, bool, string 比较,判断数据类型时up["status"] 返回的是interface 不是number 类型 image

L-ance avatar Sep 27 '22 08:09 L-ance