退出 sql.Rows.Next() for 循环

问题描述 投票:0回答:1

我正在使用 rows.Next() 在 for 循环中迭代 sqliteDB 行。然而,基于通道中的布尔值,我需要停止迭代行并退出。

for rows.Next() {
    select {
    case <-exitChannel:
        fmt.Println("\n Exiting")
        break
    default:
                fmt.Println("\nEntering")
        doSomething()

    }
}

即使 exitChannel 为 true,代码也永远不会进入相应的情况,并且永远不会打印“Exiting”

为了测试它是 go 问题还是 sqliteDB 问题,我运行了一个不带 rows.Next() 的连续 for 循环来检查代码是否进入退出情况。确实如此!

for {
    select {
    case <-exitChannel:
        fmt.Println("\n Exiting")
        break
    default:
                fmt.Println("\nEntering")
    }
}

此代码确实打印“退出”

sqlite go
1个回答
0
投票

分享问题的解决方法:

for rows.Next() {
    forLoop:
    select {
    case <-exitChannel:
        fmt.Println("\n Exiting")
        break forLoop
    default:
        fmt.Println("\nEntering")
        doSomething()

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.