Go:不执行真实条件

Go: truthy condition not executing

我正在为我的一个应用程序使用 neo4j。

在 运行 查询之后,如果找到值,result.Next() returns 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)
    }

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

调用 result.Next() 进入下一行。如果你调用它两次,你会跳过一行。 result.Next() 不是幂等的!如果你只有一个结果,调用 result.Next(),第二个调用永远不会 return 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)
}

引用自官方文档:Consuming results:

for result.Next() {
    list = append(list, result.Record().Values[0].(string))
}

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

即可迭代结果