为了账号安全,请及时绑定邮箱和手机立即绑定

Go:真实条件未执行

Go:真实条件未执行

Go
月关宝盒 2022-10-24 16:27:09
我在我的一个应用程序中使用 neo4j。如果找到值,则运行查询后,result.Next()返回一个bool    var matches []int     fmt.Println(result.Next(), "<== result NEXT ???") // 👈 this prints true     if result.Next() {        // 👇 for some reason this block won't run!        fmt.Println("Assigning the values to the var")        matches = result.Record().Values()[0].([]int)        fmt.Println("Matches found", matches)    }我非常感谢您的帮助,坚持了几个小时
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

调用result.Next()继续到下一行。如果你调用它两次,你会跳过一行。result.Next()不是幂等的!如果你只有一个结果,调用result.Next(),第二个调用将永远不会返回true。


如果您需要result.Next()在多个位置检查结果,请将其存储在变量中:


var matches []int 

hasNext := result.Next()

fmt.Println(hasNext, "<== result NEXT ???") 

if hasNext {

    fmt.Println("Assigning the values to the var")

    matches = result.Record().Values()[0].([]int)

    fmt.Println("Matches found", matches)

}

引用官方文档:消费结果:

for result.Next() {

    list = append(list, result.Record().Values[0].(string))

}

如您所见,只需调用result.Next().


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号