亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

golang中單向channel的語(yǔ)法介紹

 更新時(shí)間:2017年07月27日 11:31:44   作者:魚(yú)兒  
通過(guò)消息來(lái)共享數(shù)據(jù)是golang的一種設(shè)計(jì)哲學(xué),channel則是這種哲理的體現(xiàn)。下面這篇文章主要給大家介紹了關(guān)于golang中單向channel語(yǔ)法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面來(lái)一起看看吧。

本文主要給大家介紹的是關(guān)于golang單向channel語(yǔ)法的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō),來(lái)一起看看詳細(xì)的介紹:

今天閑來(lái)無(wú)事補(bǔ)充一下golang的語(yǔ)法知識(shí),想起來(lái)看看context的用法,結(jié)果碰到了一個(gè)沒(méi)見(jiàn)過(guò)的channel語(yǔ)法:

// A Context carries a deadline, cancelation signal, and request-scoped values
// across API boundaries. Its methods are safe for simultaneous use by multiple
// goroutines.
type Context interface {
 // Done returns a channel that is closed when this `Context` is canceled
 // or times out.
 Done() <-chan struct{}
 
 // Err indicates why this Context was canceled, after the Done channel
 // is closed.
 Err() error
 
 // Deadline returns the time when this Context will be canceled, if any.
 Deadline() (deadline time.Time, ok bool)
 
 // Value returns the value associated with key or nil if none.
 Value(key interface{}) interface{}
}

注意看:Done() <- chan struct{} ,一個(gè)接口函數(shù)的聲明怎么這么奇怪呢?下面來(lái)分解一下。

Done() chan struct{} :如果函數(shù)定義改成這樣,其意義是,

  • 函數(shù)名Done,參數(shù)(),返回值chan struct{} 。
  • 單獨(dú)拿返回值來(lái)說(shuō),它是一個(gè)管道chan,內(nèi)部的數(shù)據(jù)類型是struct{}
  • 單獨(dú)拿struct{}來(lái)說(shuō),我們熟悉type Name struct{a int, b bool}這樣去定義一個(gè)結(jié)構(gòu)體的類型,其實(shí)struct{…}就是定義結(jié)構(gòu)體,和map[string]int這種定義是一樣的,type只是給它啟了一個(gè)別名。

<- chan struct{} :?jiǎn)为?dú)看這個(gè)表達(dá)式,我們知道如果ch := make(chan struct{}) ,那么<- ch是從管道里取出數(shù)據(jù)。但是chan struct{}是類型而不是變量,竟然能從一個(gè)類型里取數(shù)據(jù)??

其實(shí)<-chan int仍舊是一個(gè)管道類型,它叫做單向channel。如果是<-chan int,說(shuō)明是只能讀不能寫(xiě)的管道(也不能關(guān)閉),如果是chan <- int ,說(shuō)明是只能寫(xiě)不能讀的管道(可以關(guān)閉),僅此而已!

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者使用Go語(yǔ)言能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Go學(xué)習(xí)筆記之Zap日志的使用

    Go學(xué)習(xí)筆記之Zap日志的使用

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言中Zap日志的使用以及安裝,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助,需要的可以參考一下
    2022-07-07
  • go交叉編譯sqlite報(bào)錯(cuò)問(wèn)題解決分析

    go交叉編譯sqlite報(bào)錯(cuò)問(wèn)題解決分析

    這篇文章主要為大家介紹了go交叉編譯sqlite報(bào)錯(cuò)問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 詳解Golang中單元測(cè)試的使用

    詳解Golang中單元測(cè)試的使用

    單元測(cè)試是檢測(cè)你寫(xiě)的一個(gè)函數(shù)是否具備安全性的一次檢測(cè),這篇文章主要為大家詳細(xì)介紹了Golang中單元測(cè)試的具體使用,希望對(duì)大家有所幫助
    2023-07-07
  • Golang定制化zap日志庫(kù)使用過(guò)程分析

    Golang定制化zap日志庫(kù)使用過(guò)程分析

    Zap是我個(gè)人比較喜歡的日志庫(kù),是uber開(kāi)源的,有較好的性能,在項(xiàng)目開(kāi)發(fā)中,經(jīng)常需要把程序運(yùn)行過(guò)程中各種信息記錄下來(lái),有了詳細(xì)的日志有助于問(wèn)題排查和功能優(yōu)化,但如何選擇和使用性能好功能強(qiáng)大的日志庫(kù),這個(gè)就需要我們從多角度考慮
    2023-03-03
  • go如何優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)

    go如何優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)

    這篇文章主要為大家介紹了go優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Go的gin參數(shù)校驗(yàn)中的validator庫(kù)詳解

    Go的gin參數(shù)校驗(yàn)中的validator庫(kù)詳解

    這篇文章主要介紹了Go的gin參數(shù)校驗(yàn)之validator庫(kù),使用 validator 以后,只需要在定義結(jié)構(gòu)體時(shí)使用 binding 或 validate tag標(biāo)識(shí)相關(guān)校驗(yàn)規(guī)則,就可以進(jìn)行參數(shù)校驗(yàn)了,而不用自己?jiǎn)为?dú)去寫(xiě)常見(jiàn)的校驗(yàn)規(guī)則,需要的朋友可以參考下
    2023-08-08
  • golang之JWT實(shí)現(xiàn)的示例代碼

    golang之JWT實(shí)現(xiàn)的示例代碼

    這篇文章主要介紹了golang之JWT實(shí)現(xiàn)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • golang中配置?sql.DB獲得更好的性能

    golang中配置?sql.DB獲得更好的性能

    這篇文章主要介紹了golang中如何配置?sql.DB獲得更好的性能,在這篇文章中,我想準(zhǔn)確解釋這些設(shè)置的作用,并展示它們可能產(chǎn)生的(積極和消極)影響,需要的朋友可以參考下
    2023-10-10
  • GoLang中的timer定時(shí)器實(shí)現(xiàn)原理分析

    GoLang中的timer定時(shí)器實(shí)現(xiàn)原理分析

    Timer中對(duì)外暴露的只有一個(gè)channel,這個(gè) channel也是定時(shí)器的核心。當(dāng)計(jì)時(shí)結(jié)束時(shí),Timer會(huì)發(fā)送值到channel中,外部環(huán)境在這個(gè) channel 收到值的時(shí)候,就代表計(jì)時(shí)器超時(shí)了,可與select搭配執(zhí)行一些超時(shí)邏輯
    2023-02-02
  • golang 語(yǔ)言中錯(cuò)誤處理機(jī)制

    golang 語(yǔ)言中錯(cuò)誤處理機(jī)制

    Golang 的錯(cuò)誤處理方式可能和這些你熟悉的語(yǔ)言有所不同,今天通過(guò)本文給大家分享golang 語(yǔ)言中錯(cuò)誤處理機(jī)制,感興趣的朋友一起看看吧
    2021-08-08

最新評(píng)論