将切片的所有项目添加到通道中

2024-03-13

在 Go 中,是否有比以下更惯用的方法将数组/切片的所有元素添加到通道中?

ch := make(chan string)
values := []string{"lol", "cat", "lolcat"}

go func() {
    for _, v := range values {
        ch <- v
    }
}()

我正在寻找类似的东西ch <- values...但这被编译器拒绝了。


Until 迭代器 https://github.com/golang/go/discussions/54245会出现的,是的,你写的代码是很惯用的。我将其打包以供重用,在我工作的代码库中如下所示:

// ToChan returns a channel containing all elements in the slice s.
// The channel is closed when all elements are consumed from the channel.
func ToChan[T any](s []T) <-chan T {
    ch := make(chan T, len(s))
    for _, e := range s {
        ch <- e
    }
    close(ch)
    return ch
}

https://go.dev/play/p/c5v4df_M1IG https://go.dev/play/p/c5v4df_M1IG

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

将切片的所有项目添加到通道中 的相关文章

  • 为什么空切片有 24 个字节?

    我想了解创建空切片时会发生什么make int 0 我执行此代码进行测试 emptySlice make int 0 fmt Println len emptySlice fmt Println cap emptySlice fmt Pri
  • 如何更改“go build”的库路径

    我正在尝试与 goncurses 一起工作 在 Centos 6 上 ncurses 库很旧 5 7 想要 5 9 所以我从源代码构建了 ncurses 并将其安装到 usr lib usr include 等中 如何告诉 go get 针
  • 空或不需要的结构字段

    我有两个结构体 代表将插入到 mongodb 数据库中的模型 一个结构 投资 将另一个结构 集团 作为其字段之一 type Group struct Base Name string json name bson name type Inv
  • 在 Go 中将 float 转换为 int 时如何舍入到最近的 int

    将 float 转换为 int 时 小数点将被丢弃 有什么干净的方法可以将其四舍五入到最接近的整数 x int 3 6 应等于 4 而不是 3 int f 0 5 如果 gt 5 将导致向上舍入
  • Golang 中的“相互”包导入

    是否可以在 Golang 中执行 相互 包导入之类的操作 举例来说 我有两个包 A 和 B 分别具有 AFunc 和 BFunc BFunc2 函数 package A import B func AFunc do stuff but al
  • 地图中的最大元素数

    GO 中的 Map 最多可以存储多少个元素 如果我需要经常从 Map 访问数据 那么在长时间运行的程序中不断向 Map 添加项目并从中检索项目是一个好主意吗 除了map length类型的最大值之外 map中的元素数量没有理论上的限制 in
  • 如果覆盖率低于一定百分比,则单元测试失败

    我制作了一个执行的 makefilego test cover 是否有可能失败make unit tests如果覆盖范围低于 X 则命令 我该怎么做呢 您可以使用TestMain在你的测试中做到这一点 TestMain 可以充当测试的自定义
  • IntelliJ 2017.1.2 GOLANG 调试不适用于包中的断点

    我的应用程序由一个 main go 文件和一些包组成 当在 main go 中命中断点时 IntelliJ 按预期工作 显示变量值等 但是 当在不同的包中设置断点时 除了被命中之外 不会显示任何变量 并且不会跳过 进入功能按预期工作 被击中
  • Go中funcappend的实现在哪里?

    我对 go 非常感兴趣 并尝试阅读 go 函数的实现 我发现其中一些函数没有实现 如追加或调用 The append built in function appends elements to the end of a slice If i
  • 通过 API Gateway 使用表单数据将图像发布到 Lambda 函数会导致文件无效

    I ve a 用 Go 编写的 Lambda 函数 https github com mhausenblas imgn blob master functions app uploadimg main go应该允许图像文件上传 通过 HTM
  • 如何使用json传递opentracing数据

    我的 API 网关启动一个跟踪器和一个用于验证电子邮件的范围 然后它传递给user service用于验证 我想通过这个span详情至user service作为 json 对象并启动另一个span as a tracer start sp
  • 使用 MongoDB Atlas 时 mongo-go-driver 因服务器选择超时而失败

    去版本 1 12 5 我有这个使用 node js mongo 驱动程序的代码 const MongoClient require mongodb MongoClient const uri process env MONGO HOST d
  • 在 Go 中执行字节数组

    我正在尝试在 Go 程序中执行 shellcode 类似于使用其他语言执行此操作的方式 示例 1 C 程序中的 Shellcode https stackoverflow com questions 16626857 shellcode i
  • Google Cloud Kubernetes 上任务队列的替代方案

    我发现任务队列主要用于App Engine标准环境 我正在将现有服务从 App Engine 迁移到 Kubernetes 任务队列的一个好的替代方案是什么 推送队列是当前正在使用的队列 我在线阅读文档并浏览了此链接 何时使用 PubSub
  • 无需时间即可生成随机字符串?

    我知道如何使用 Runes 和播种 rand Init 在 go 中生成随机字符串time UnixNano 我的问题是 是否可以 使用 stdlib 在不使用当前时间戳 安全 的情况下播种 rand 此外 我问 因为仅仅依靠时间来为敏感操
  • ReverseProxy取决于golang中的request.Body

    我想构建一个 http 反向代理 它检查 HTTP 主体 然后将 HTTP 请求发送到它的上游服务器 你怎么能在 Go 中做到这一点 初始尝试 如下 失败 因为 ReverseProxy 复制传入请求 修改它并发送 但正文已被读取 func
  • 有没有一种方法可以在不停机的情况下更新 net/http 服务器中的 TLS 证书?

    我有一个简单的 https 服务器 提供一个简单的页面 如下所示 为简洁起见 没有错误处理 package main import crypto tls fmt net http func main mux http NewServeMux
  • 如何使用 Java 原生接口从 Java 调用 Go 函数?

    可以通过以下方式调用 C 方法JNA https en wikipedia org wiki Java Native AccessJava 中的接口 如何使用 Go 实现相同的功能 package main import fmt impor
  • 初始化嵌套匿名结构

    我有一个 json 作为 fields time id status customerId additionalDetail pageInfo start 0 rows 1000 我想将我的结构编组到上面的 json 并创建如下结构 typ
  • Go中如何自定义http.Client或http.Transport超时重试?

    我想实现一个自定义http Transport对于标准http Client 如果客户端超时 它将自动重试 附 由于某种原因 习俗http Transport is a 一定有 我已经查过了hashcorp go retryablehttp

随机推荐

  • 我可以使用 *.tlb 文件而不使用 Regasm 在计算机上注册它吗

    我们正在支持老化的 VB6 系统 我们已在 Net 中为其编写了新代码 将代码放入程序集中 然后导出 tlb 文件以与 VB6 代码库一起使用 我的问题是 在我希望运行代码的每台计算机上 我是否必须使用 Regasm 来注册类型库 我之所以
  • WCF 最大消息大小配额

    我正在尝试调用 WCF 服务 托管在 Windows 服务中 而不是 IIS 但收到以下错误 最大消息大小配额 传入消息已超出 对于远程通道 请参阅 服务器日志以获取更多详细信息 我尝试将 MaxReceivedMessageSize 和
  • 有序 logit R polr 的聚类标准误差 - 估计中删除的值

    我对 R 很陌生 并且习惯了非常基本的应用程序 现在我遇到了一个问题需要帮助 我正在寻找一种方法聚类标准误 for an 有序逻辑回归 my estimation is similar to this https stats idre uc
  • app.component.css 中的 CSS 样式未应用于选项卡正文内容

    你能告诉我为什么这里没有应用填充 即使我在 app component css 文件中将 padding top 设置为 20px 如果我在 styles css 文件中设置它 它将起作用 不知道为什么当我将 css 属性移动到 app c
  • 使用 Ramda 镜头更改对象中的值属性

    我想知道如何使用 Ramda 镜头更改对象属性 目前 我有一个深层状态 buckets blocks messages replies id 0 text text 0 value simple value 0 id 1 text text
  • 在 Spring 中获取 FileNotFoundException

    我想使用 BeanFactory 创建 bean 但出现异常 java io FileNotFoundException WEB INF businesscaliber servlet xml Resource res new FileSy
  • 将 Java 2d 图形图像保存为 .png 文件

    我正在绘制模拟生成的信息的图形表示 我显示了图表 但我遇到的问题是如何将其保存为 png 当它保存 png 时 文件是全黑的 所以它不是保存我的图形 而是创建一些空白 png 文件 问题是我很难弄清楚如何转换为 BufferedImage
  • TypeScript 中的 function 和 => 有什么区别? [复制]

    这个问题在这里已经有答案了 目前 我正在学习 TypeScript 我对关键字函数和 gt 粗箭头 之间的区别感到非常困惑 请看下面的代码 interface Counter start number interval number res
  • Qt BLE For Android:特性更新不会触发characteristicChanged信号

    这是我们拥有的设备传输自定义服务的自定义特征的定期更新的东西 该设备中的服务和特征是通过 XML 文件定义的 当然 这是指蓝牙BLE协议 我想做的是创建一个简单的 Qt Android 应用程序 连接到设备并监控更新 我已经发现了该服务并将
  • C++ Windows 线程池(非升压/c++11)

    有没有办法仅使用 C 或 Windows C 函数创建线程池 我无法访问 boost 或任何库 我可以访问代码项目 但找不到任何非 UNIX 的内容 并且我发现很难找到实现线程池的方法 我使用的是 VS2010 它还不支持 C 11 线程
  • Android JUnit 测试因 java.lang.VerifyError 失败

    Aloha 我一直遵循这里的指导方针 http developer android com resources tutorials testing helloandroid test html http developer android
  • 替换从 javascript 获取的字符

    我正在制作一个程序 从 flickr 集中提取所有图片 我在代码中发现每个图片链接都有一个大字符串 问题是这样的 链接具有以下格式 https c2 staticflickr com 4 3925 14562233192 3fe2b8fe1
  • 在具有多个参数的 pandas 数据帧上应用滚动函数

    我正在尝试在 pandas 数据帧上应用具有 3 年窗口的滚动函数 import pandas as pd Dummy data df pd DataFrame Product A A A A B B B B Year 2015 2016
  • NodeJs 程序完成后不退出

    抱歉这个菜鸟问题 我是 Javascript 初学者 我正在使用 NodeJs MySQL 包将我的节点应用程序连接到我的数据库 但是成功运行查询后 程序不会退出 它会永远留在那里 直到我手动终止它 我希望程序运行查询并退出程序 我正在使用
  • 在 READ COMMITTED 隔离级别中何时/什么锁被持有/释放

    我正在尝试了解 SQL Server 中的隔离 锁 我在 READ COMMITTED 隔离级别 默认 中有以下场景 我们有一张桌子 create table Transactions Tid int amt int with some r
  • 如何连接 AWS DynamoDB 中的表?

    我知道整个设计应该基于自然聚合 文档 但是 我正在考虑实现一个单独的本地化表 语言 键 文本 然后使用其他表中的键 但是 我找不到任何这样做的例子 您是对的 DynamoDB 并非设计为关系数据库 并且不支持联接操作 您可以将 Dynamo
  • 使用 python/pandas 的字典理解与 str.contains 进行部分字符串匹配

    我有一个数据框 其中有一列名为course names使用带有课程名称列表的映射字典 我希望在键中匹配我想要在值列中分配的值 import pandas as pd df pd DataFrame course name Phsyics M
  • 获取所选元素的外部 HTML

    我正在尝试使用 jQuery 获取所选对象的 HTML 我知道 html 功能 问题是我需要包含所选对象的 HTML 在本例中为表格行 其中 html 仅返回行内的单元格 我四处搜索 发现了一些非常 hackish 类型的方法来克隆对象 将
  • Python:linecache 没有按预期工作?

    你好 我有这个 python 脚本 我需要用它来遍历一些目录并提取这些目录中的一些文件中的一些信息 所以我有很多目录 每个目录中还有 5 个子目录 在这 5 个子目录中 每一个都有 3 个文本文件 一个是我忽略的 txt 另一个是我需要阅读
  • 将切片的所有项目添加到通道中

    在 Go 中 是否有比以下更惯用的方法将数组 切片的所有元素添加到通道中 ch make chan string values string lol cat lolcat go func for v range values ch lt v