gpt4 book ai didi

go - 在 Go 中创建单向 channel 有什么意义

转载 作者:IT王子 更新时间:2023-10-29 00:42:06 27 4
gpt4 key购买 nike

在 Go 中可以创建单向 channel 。如果想要限制给定 channel 上可用的一组操作,这是一个非常方便的功能。然而,据我所知,此功能仅对函数的参数和变量的类型规范有用,而通过 make 创建单向 channel 对我来说看起来很奇怪。我读过这个 question ,但这与在 Go 中创建只读(或写入) channel 无关,而是关于一般用法。所以,我的问题是关于下一个代码的用例:

writeOnly := make(chan<- string)
readOnly := make(<-chan string)

最佳答案

理论上,您可以使用只写 channel 进行单元测试,以确保您的代码不会向 channel 写入超过特定次数。

是这样的:http://play.golang.org/p/_TPtvBa1OQ

package main

import (
"fmt"
)

func MyCode(someChannel chan<- string) {
someChannel <- "test1"
fmt.Println("1")
someChannel <- "test2"
fmt.Println("2")
someChannel <- "test3"
fmt.Println("3")
}

func main() {
writeOnly := make(chan<- string, 2) // Make sure the code is writing to channel jsut 2 times
MyCode(writeOnly)
}

但这对于单元测试来说是非常愚蠢的技术。您最好创建一个缓冲 channel 并检查其内容。

关于go - 在 Go 中创建单向 channel 有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36798580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com