2017-04-14 21 views
2

我想創建一個通道片幷包含整數。整數通道片

test := make(chan []int) 
test <- 5 

這是我初始化它的方式,但我不知道現在該怎麼過,因爲對我們會用追加切片值,但對於渠道,我們使用<發送數據 -

我試圖與這兩個只是< - 和追加兩者結合像下面並不能得到它的工作

test <- append(test, 5) 

回答

1

您定義的[]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 
1

這就是所謂的

緩衝通道

正確構造結是

test := make(chan int, 5)  
test <- 1 
test <- 2 

Golang旅遊有一個例子:

https://tour.golang.org/concurrency/3

+0

因此,這是一個整數的通道,但如果我希望大小是動態的呢? – Higeath

+0

Go不支持動態大小的頻道。 – Adrian