我想創建一個通道片幷包含整數。整數通道片
test := make(chan []int)
test <- 5
這是我初始化它的方式,但我不知道現在該怎麼過,因爲對我們會用追加切片值,但對於渠道,我們使用<發送數據 -
我試圖與這兩個只是< - 和追加兩者結合像下面並不能得到它的工作
test <- append(test, 5)
我想創建一個通道片幷包含整數。整數通道片
test := make(chan []int)
test <- 5
這是我初始化它的方式,但我不知道現在該怎麼過,因爲對我們會用追加切片值,但對於渠道,我們使用<發送數據 -
我試圖與這兩個只是< - 和追加兩者結合像下面並不能得到它的工作
test <- append(test, 5)
您定義的[]int
一個通道,但正試圖發送一個int
。你必須發送一片整數,然後讓接收器使用該片。
工作示例是在這裏:https://play.golang.org/p/TmcUKU8G-1
注意到,我追加4到things
片,而不是渠道本身
package main
import (
"fmt"
)
func main() {
c := make(chan []int)
things := []int{1, 2, 3}
go func() {
c <- things
}()
for _, i := range <-c {
fmt.Println(i)
}
go func() {
c <- append(things, 4)
}()
for _, i := range <-c {
fmt.Println(i)
}
}
輸出:
1
2
3
1
2
3
4
這就是所謂的
緩衝通道
正確構造結是
test := make(chan int, 5)
test <- 1
test <- 2
Golang旅遊有一個例子:
因此,這是一個整數的通道,但如果我希望大小是動態的呢? – Higeath
Go不支持動態大小的頻道。 – Adrian