gpt4 book ai didi

go - 在 Go 中打印 channel 的内容

转载 作者:数据小太阳 更新时间:2023-10-29 03:43:23 28 4
gpt4 key购买 nike

如何在 Go 中打印 channel 的内容?

例如:

package main

import "fmt"

func main() {
ok := make(chan int)
ok <- 1
x := <- ok
fmt.Println(x)
}

据我了解,ok 是一个可以存储整数值的 channel 。那么,我怎样才能打印它的内容呢?

fmt.Println(ok) 不打印 channel 内存储的值。

谢谢。

最佳答案

channel make(chan int)隐式大小为零(引用:https://golang.org/ref/spec#Making_slices_maps_and_channels)

大小为零的 channel 是无缓冲的。指定大小的 channel make(chan int, n) 被缓冲。参见 http://golang.org/ref/spec#Send_statements关于缓冲与非缓冲 channel 的讨论。 http://play.golang.org/p/VZAiN1V8-P 处的示例说明了差异。

在这里, channel <-okok <-将被阻止,直到有人处理它(并发)。所以,改变ok := make(chan int)ok := make(chan int,1)

package main

import "fmt"

func main() {
ok := make(chan int, 1)
ok <- 1
x := <- ok
fmt.Println(x)
}

或者并发处理

package main

import "fmt"

func main() {
ok := make(chan int)
go func(){
ok <- 1
}()
x := <- ok
fmt.Println(x)
}

关于go - 在 Go 中打印 channel 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53267239/

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