猿问

Go:真实条件未执行

我在我的一个应用程序中使用 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)

    }

我非常感谢您的帮助,坚持了几个小时


月关宝盒
浏览 75回答 1
1回答

慕桂英3389331

调用result.Next()继续到下一行。如果你调用它两次,你会跳过一行。result.Next()不是幂等的!如果你只有一个结果,调用result.Next(),第二个调用将永远不会返回true。如果您需要result.Next()在多个位置检查结果,请将其存储在变量中:var matches []int&nbsp;hasNext := result.Next()fmt.Println(hasNext, "<== result NEXT ???")&nbsp;if hasNext {&nbsp; &nbsp; fmt.Println("Assigning the values to the var")&nbsp; &nbsp; matches = result.Record().Values()[0].([]int)&nbsp; &nbsp; fmt.Println("Matches found", matches)}引用官方文档:消费结果:for result.Next() {&nbsp; &nbsp; list = append(list, result.Record().Values[0].(string))}如您所见,只需调用result.Next().
随时随地看视频慕课网APP

相关分类

Go
我要回答