缓冲通道上的范围进入切片[关闭]

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

我在 go 缓冲通道方面遇到了问题,因为我试图从中迭代一个值,并且收到错误报告,这里是代码:

package main
import (
"fmt"
)
func main() {
var ch chan int = make(chan int, 2)
    ch <- 12
    ch <- 23
    var br []int
    for b := range ch {
         br = b
        fmt.Println(br)
    }
}
 .\access.go:17:9: cannot use b (variable of type int) as []int value in assignment

有没有办法实现这一点?或者是否可以解决它? 欢迎任何人参与其中,我愿意接受建议,让我保留在标准 golang 包中(请不要使用外部模块)谢谢!!!.

go range slice channel
1个回答
2
投票

您遇到的错误是由于您尝试将单个

int
值分配给
int
br
的切片,这是无效的。

这是更正后的代码:

package main

import (
    "fmt"
)

func main() {
    var ch chan int = make(chan int, 2)
    ch <- 12
    ch <- 23
    var br []int
    for b := range ch {
        br = append(br, b) // Append the value to the slice
        fmt.Println(br)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.