跳出选择循环?

2024-04-16

我正在尝试使用select在循环中接收消息或超时信号。如果收到超时信号,则循环应中止:

package main
import ("fmt"; "time")
func main() {
    done := time.After(1*time.Millisecond)
    numbers := make(chan int)
    go func() {for n:=0;; {numbers <- n; n++}}()
    for {
        select {
            case <-done:
                break
            case num := <- numbers:
                fmt.Println(num)
        }
    }
}

然而,它似乎并没有停止:

$ go run a.go
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[...]
3824
3825
[...]

为什么?我正在使用吗time.After wrong?


The Go 规格说 http://golang.org/ref/spec#Break_statements:

“break”语句终止最里面的“for”的执行, 同一函数内的“switch”或“select”语句。

在您的示例中,您只是打破了 select 语句。如果你更换break with a return声明你会看到它正在工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跳出选择循环? 的相关文章

  • 记录到 golang 中的文件

    我从 golang 开始 当我开始构建我的应用程序时 我想从一开始就添加日志记录 这就是我遇到问题的地方 如果我打开一个文件并使用标准日志记录库 我就可以写入文件 就像这样 package main import os fmt log fu
  • golang - 省略 json 属性进行序列化的优雅方法

    我有一个用户结构 其中包含密码等敏感字段 type User struct UID string json uid binding required Password string json password binding require
  • 如何列出已安装的 go 软件包

    据我所知go distribution带有某种package manager After go 1 4 1我已经运行的安装go help为了找到任何能够列出本地安装的子命令go packages 但不幸的是没有 那么该怎么做呢 goinst
  • 使用 Go 解组嵌套 xml

    我有以下代码片段 我一直在努力让它工作 我到处寻找解决方案 但我找到的解决方案似乎都不起作用 我的映射似乎有问题xml Unmarshal命令 因为它涉及嵌套字段 下面的代码用于检索第一个被称为的值unit 并且位于 xml 代码的顶层 另
  • C++ 条件变量通知未按预期工作

    我正在尝试在之前的工作完成后立即启动新线程worker thread has started 但也许结束了 也可能没有结束 我已经用时间延迟替换了开始和结束的工作 我的代码是 include
  • MySQL ORDER BY rand(),名称 ASC

    我想获取一个包含 1000 个用户的数据库并随机选择 20 个用户 ORDER BY rand LIMIT 20 然后按名称对结果集进行排序 我想出了以下查询not像我希望的那样工作 SELECT FROM users WHERE 1 OR
  • 将接口转换为结构体

    type SipField interface Info id name defaultValue string length int type Field string func f Field Get string return str
  • 从恐慌中恢复的程序未按预期退出

    根据我的理解 当恐慌恢复时 我期望程序退出并表现出正常行为 但事实并非如此 我期望最后一行打印 程序结束 是正确的吗 如果出现运行时错误 它不会被打印 是吗 package main import fmt func main defer f
  • 处理变量的范围:内部循环

    作为一名直接进入 Go 的 JS 开发者 如果长度超过commits不止一个 我没有太多时间来完成这件事 而且我搜索的时间比我希望的要长 关于如何重组它或让它发挥作用有什么想法吗 case github PushPayload push p
  • 为什么空切片有 24 个字节?

    我想了解创建空切片时会发生什么make int 0 我执行此代码进行测试 emptySlice make int 0 fmt Println len emptySlice fmt Println cap emptySlice fmt Pri
  • 如果通过 SQL 查询结果没有找到记录,则应为 0

    我正在使用火鸟 我需要以下结果 但我没有得到我需要的结果 我尝试了以下查询 SELECT CASE EXTRACT MONTH FROM pd Date WHEN 1 THEN January WHEN 2 THEN February WH
  • Go 中的格式错误 - %s %v 或 %w

    s v and w可用于格式化 Go 中的错误 将它们转换为字符串 fmt Errorf 它们在 Go 自己的工具中的使用方式似乎有所不同 In cmd go internal get path go https github com go
  • ConstantTimeByteEq 如何工作?

    在大神的密码库里 找到了这个函数ConstantTimeByteEq http golang org src pkg crypto subtle constant time go s 897 936 L17 它有什么作用 如何工作 Cons
  • 从头开始使用映像部署无法启动

    我正在使用以下内容构建图像Dockerfile FROM golang 1 19 2 bullseye as builder COPY src src WORKDIR src RUN CGO ENABLED 1 go build race
  • 为什么 golang 堆配置文件中的“Total MB”小于顶部的“RES”?

    我有一个用 go 编写的服务 在运行时需要 6 7G 内存 RES 在顶部 所以我使用 pprof 工具试图找出问题所在 go tool pprof pdf http
  • jQuery - 选择同一级别的div

    我想在单击按钮时选择一个特定的div 唯一的问题是 它必须是buttonClicked的父div的div 示例 div class container div class box h2 Langtidsparkering h2 div cl
  • 使用私有 git 存储库时的 go 工作区结构

    当你不使用 github 时 我一直在尝试找出 go 代码 工作区的标准文件夹布局 结构 我可以看到如何go get在获取 github 项目时有效 但假设我自己的 git 项目不会有 github com username project
  • PostgreSQL 选择结果大小

    我在 PostgreSQL 数据库中有一个表 并从该表中进行一些限制的选择 并且我想知道该选择有多少磁盘空间 我知道有一个postgres函数pg total relation size这给了我数据库中某个表的大小 但是如何找到 子表 的大
  • 如何检查我的 golang 应用程序是否使用 Boringcrypto 而不是本机 golang crypto?

    上下文 我正在阅读多篇有关使我的 golang 应用程序符合 FIPS 要求的文章 换句话说 使我的应用程序使用 Boringcrypto 而不是本机 golang crypto https kupczynski info posts fi
  • ConcurrentLinkedDeque 与 LinkedBlockingDeque

    我需要一个线程安全的 LIFO 结构 并发现我可以使用线程安全的实现Deque为了这 Java 7 引入了ConcurrentLinkedDeque http docs oracle com javase 7 docs api java u

随机推荐

  • 如何创建类似于ios 7日历图标的动态图标?

    我想创建动态文本更改图标 例如 iOS 7 中的日历应用程序 有什么办法可以做到吗 你不能这样做 没有 API 允许这样做 您的应用程序图标位于应用程序包中 该图标是只读的 因此无法修改
  • PHP 错误:“未指定输入文件。”在本地开发服务器上的 IIS 10.0、PHP 5.6 中

    我的开发服务器有问题 运行 Win 10 Pro IIS 10 0 16299 PHP 5 6 安装到C Program Files x86 PHP v5 6 这是最近的一个问题 PHP 以前工作得很好 但后来就停止工作了 我的所有 PHP
  • 分支内存不足的递归

    我有一个编程作业是这样的 给定三个数字 a b 和 c 1 a b c 10 18 每次有两个选择时 要么将 b 添加到 a a b 要么将 a 添加到 b b a 编写一个程序 根据 a 和 b 相加能否得到 c 来打印 YES 或 NO
  • 如何设置 Xcode 以获得正确的 javascript 格式?

    当我输入如下内容时 Xcode3 和更新的 无法正确格式化 Javascript doSomething somewhere function err result 它插入了一个巨大的凹痕 我尝试更改 Xcode 格式化规则 但没有成功 以
  • 谁能解释为什么我的代码中会弹出这些“不适当的阻止方法调用”警告?

    我在 Kotlin 中编写了这段代码 使用协程下载一些 API 信息来下载数据 然而 代码显示了很多警告 将消息声明为 不适当的阻塞方法调用 这是代码 class DownloadInfoClass private lateinit var
  • DataFrame Plot:如何对 X 轴排序

    我正在绘制数据框 pandas 字段中的一些计数 我发现 X 轴按计数排序 降序 相反 是否可以按字段的字母顺序排序 这是Python代码 df cartype value counts plot kind bar 这按计数排序 但我想按车
  • UIButton 标签文本被剪切

    我在 Interface Builder 中内置了一个 UIButton 它有一个默认标签 在 Xcode 中 我动态更改标签文本 如下所示 myButton titleLabel text this is the new label 但是
  • Selenium:谁设置了 cookie?

    在selenium 和python 如果它确实重要的话 中有没有办法找出哪个js设置 访问某些cookie 我需要的一些功能由OpenWPM https github com citp OpenWPM 他们是如何做到的呢 据我所知 他们 O
  • 按分割字符串 django orm 排序

    我有一个 ID 作为参考号和年份 格式如下 1 17 98 15 2 17 112 17 2345 17 67 17 9 17 8974 16 当我使用 django orm 获取我的 ID 时 obj MyIDs objects filt
  • 使用构造函数参数从类创建新实例

    我遇到过这样的情况 我的 Java 类需要创建大量某种类型的对象 我想给出作为参数创建的对象的类的名称 此外 我需要在其构造函数中为创建的类提供一个参数 我有类似的东西 class Compressor Class ccos public
  • mvn release 使用特定的私钥推送到 git

    我希望有人能帮忙解决这个问题 我正在尝试配置mvn release插件pom xml这样更新的 pom 版本和标签就会作为 git repo 的一部分推送到release prepare 至关重要的是 它需要使用特定用户的ssh私钥 因为最
  • 如何计算 Windows 区域 (HRGN) 的面积(以像素为单位)?

    获取任意 Windows 区域面积的最快方法是什么 我知道我可以枚举边界矩形的所有点并调用PtInRegion 功能但是似乎不是很快 也许你知道一些更快的方法 你打电话时GetRegionData http msdn microsoft c
  • 与其他浏览器中的“-moz-element”等效吗?

    我想创建一个不透明模糊叠加 类似于 Windows Aero 或 iOS7 不幸的是filter blur or filter url svgBlur 属性只能应用于元素 不能应用于其后面的内容 为了解决这个问题 我们需要一个模糊背景的副本
  • dos2unix 不转换 ^M

    我从 Windows 7 上运行的程序将结果导出到文本文件中 并在 Xubuntu 14 04 上复制该文件 在终端中 我跑了dos2unix file txt 这告诉我converting file out mapqtl txt to U
  • 使用 UDF 的 DataFrame 给出任务不可序列化异常

    尝试在数据帧上使用 show 方法 它给出了任务不可序列化异常 我尝试扩展可序列化对象 但错误仍然存 在 object App extends Serializable def main args Array String Unit Log
  • 在android中点击键盘的完成按钮时将数据插入数据库

    我想知道在将数据插入数据库时 按下键盘 完成 按钮时到底应该做什么 我在这里使用多个编辑文本 当谈到最后一个编辑按钮时 我必须将所有数据插入数据库 private static final String CREATE DB TABLE BU
  • opencv VideoCapture.设置灰度?

    我会避免将摄像机拍摄的每一帧转换为cvtColor frame image CV RGB2GRAY 有没有办法设置VideoCapture直接进入灰度 Example VideoCapture cap 0 cap set CV CAP PR
  • 如何获取从标准 UIViewController 中调用的 UIWebView 的 UIScrollView 委托方法?

    所以我只有一个标准的 UIViewController 其中有一个显示 pdf 的 UIWebView 对于应用程序功能 我需要能够响应 UIWebView 的嵌套 UIScrollView 事件 例如scrollViewWillBegin
  • 使用 Hive 自定义输入格式

    Update 好吧 事实证明以下不起作用的原因是因为我使用的是较新版本的InputFormat API import org apache hadoop mapred这是旧的与import org apache hadoop mapredu
  • 跳出选择循环?

    我正在尝试使用select在循环中接收消息或超时信号 如果收到超时信号 则循环应中止 package main import fmt time func main done time After 1 time Millisecond num