Golang: chan定義問題(7)


通常都是定義讀寫雙向的 chan,定義單向 chan 問題。

專欄的介紹可以參考 《GotchaGolang專欄》,代碼可以看《寶庫-Gotcha》

通過 只寫 chan 傳遞另一個只讀的 chan,怎么寫

案例

平常一般是這么聲明 chan 的:

1
2
3
4
5
6
7
8
9
10
package main

import "fmt"

func () {

xChan := make(chan int)

fmt.Println(len(xChan)); //0
}

要聲明一個單向的 chan 可以使用這一的方式: 大專欄  Golang: chan定義問題(7)p>

1
2
chan<- float64  // 只寫 float64 類型變量 (write-only)
<-chan int // 只讀 int 類型變量 (read-only)

傳遞 chan 變量怎么辦?

1
2
3
chan<- chan int    //傳遞雙向 chan, 同 chan<- (chan int)
chan<- <-chan int //傳遞只讀 給只寫chan, 同 chan<- (<-chan int)
<-chan <-chan int //傳遞只讀chan 給只讀chan 同 <-chan (<-chan int)

總結

定義只讀,只寫的類型,看上去比較詭異,可以把 <-chanchan<- 看做類型即可,同 chan 一樣。


Merlin 2018.3 chan 的定義問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM