最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang逗號ok模式整合demo

 更新時間:2023年11月01日 11:08:48   作者:Peanut  
這篇文章主要為大家介紹了golang逗號ok模式整合demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

golang的逗號ok模式的使用整理

/*
@Time : 2019-02-23 11:49 
@Author : Tenlu
@File : ok
@Software: GoLand
*/
package main
import "fmt"
// 逗號ok模式
func main() {
    useMap()
    useChan()
    userType()
        useType2()
}
//1.檢測map中是否含有指定key
func useMap() {
    company := map[string]string{"polly": "tencent", "robin": "baidu", "jack": "alibaba", "tenlu": "itech8"}
    if _, ok := company["toms"]; !ok {
        fmt.Println("key toms is not exists")
    }
    for ck, cv := range company {
        fmt.Println(ck + "->" + cv)
    }
}
// 2. 檢測chan是否關閉
func useChan() {
    ch := make(chan int, 10)
    for i := 1; i <= 5; i++ {
        ch <- i
    }
    close(ch) // chan賦值結束,必須關閉通道
    elem := <-ch
    fmt.Println(elem) // 1  // FIFO隊列,先發(fā)送的chan一定最先被接收
    for cc := range ch {
        fmt.Println(cc)
    }
        // ch <-8 // 此時再往ch這個chan里發(fā)送數(shù)據,就會報錯,因為通道已經關閉,panic:send on closed channel 
    elem2 := <-ch
    elem3 := <-ch
    fmt.Printf("elem2:%d\n", elem2) // 0,因為通道已經關閉
    fmt.Printf("elem3:%d\n", elem3) // 0
    if _, isClosed := <-ch; !isClosed {
        fmt.Println("channel closed")
    }
    // go是沒有while循環(huán)的,此處類似其他語言的while(true)
    for {
        i, ok := <-ch
        if !ok {
            fmt.Println("channel closed!")
            break
        }
        fmt.Println(i)
    }
}
// 3.檢測是否實現(xiàn)了接口類型
type I interface {
    // 有一個方法的接口 I
    Get() Int
}
type Int int
// Int 類型實現(xiàn)了 I 接口
func (i Int) Get() Int {
    return i
}
func userType() {
    var myint Int = 5
    var inter I = myint // 變量賦值給接口
    val, ok := inter.(Int)
    fmt.Printf("%v, %v\n", val, ok) // 輸出為:5,true
}
func useType2()  {
   // chan 類型的空值是 nil,聲明后需要配合 make 后才能使用。
   var ch=make(chan interface{},10)
   ch<-10
   ch<-"jack"
   ch<-map[string]interface{}{"name":"jack","age":11}
   close(ch) // 此處不close通道,遍歷時則報錯
   fmt.Printf("%v\n",<- ch)
   for c:=range ch {
      fmt.Printf("for:%v\n",c)
      fmt.Sprintf("type:%T\n", c)
      if newValue,ok:=c.(map[string]interface{});ok{
         fmt.Printf("type:%s\n",reflect.TypeOf(c)) // 獲取變量類型
         // map[string]interface {}
         if _,ok:=newValue["name"];ok{
            for k,v:=range newValue {
               fmt.Printf("%v->%v,\n",k,v)
            }
         }
      }
   }
   fmt.Printf("%v\n",<- ch) // nil
}
func useType2()  {
   // chan 類型的空值是 nil,聲明后需要配合 make 后才能使用。
   var ch=make(chan interface{},10)
   ch<-10
   ch<-"jack"
   ch<-map[string]interface{}{"name":"jack","age":11}
   close(ch) // 此處不close通道,遍歷時則報錯
   fmt.Printf("%v\n",<- ch)
   for c:=range ch {
      fmt.Printf("for:%v\n",c)
      fmt.Sprintf("type:%T\n", c)
      if newValue,ok:=c.(map[string]interface{});ok{
         fmt.Printf("type:%s\n",reflect.TypeOf(c)) // 獲取變量類型
         // map[string]interface {}
         if _,ok:=newValue["name"];ok{
            for k,v:=range newValue {
               fmt.Printf("%v->%v,\n",k,v)
            }
         }
      }
   }
   fmt.Printf("%v\n",<- ch) // nil
}

代碼里的注釋很詳細,有需要童鞋可以自行研究實踐下

以上就是golang逗號ok模式整合demo的詳細內容,更多關于golang逗號ok模式的資料請關注腳本之家其它相關文章!

相關文章

  • Go在GoLand中引用github.com中的第三方包具體步驟

    Go在GoLand中引用github.com中的第三方包具體步驟

    這篇文章主要給大家介紹了關于Go在GoLand中引用github.com中第三方包的具體步驟,文中通過圖文介紹的非常詳細,對大家學習或者使用Go具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • golang NewRequest/gorequest實現(xiàn)http請求的示例代碼

    golang NewRequest/gorequest實現(xiàn)http請求的示例代碼

    本文主要介紹了golang NewRequest/gorequest實現(xiàn)http請求的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Go語言編譯原理之源碼調試

    Go語言編譯原理之源碼調試

    這篇文章主要為大家介紹了Go語言編譯原理之源碼調試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Go語言使用模板渲染HTML頁面的實現(xiàn)技巧

    Go語言使用模板渲染HTML頁面的實現(xiàn)技巧

    在Web開發(fā)中,服務器端模板渲染仍然是很多場景(后臺管理、郵件模板、服務端渲染頁面等)的首選,Go標準庫里的html/template不僅易用,而且默認防XSS,非常適合服務端渲染,本文通過實戰(zhàn)示例講解如何在Go中使用模板渲染HTML頁面,需要的朋友可以參考下
    2025-08-08
  • Go?并發(fā)編程協(xié)程及調度機制詳情

    Go?并發(fā)編程協(xié)程及調度機制詳情

    這篇文章主要介紹了Go并發(fā)編程協(xié)程及調度機制詳情,協(xié)程是Go語言最大的特色之一,goroutine的實現(xiàn)其實是通過協(xié)程,更多相關內容需要的朋友可以參考一下
    2022-09-09
  • Go語言面試題之select和channel的用法

    Go語言面試題之select和channel的用法

    金九銀十面試季到了(PS:貌似今年一年都是面試季),就業(yè)環(huán)境很差,導致從業(yè)人員不得不卷。本文將重點講解一下Go面試進階知識點之select和channel,需要的可以參考一下
    2022-09-09
  • golang調用windows平臺的dll庫的方法實現(xiàn)

    golang調用windows平臺的dll庫的方法實現(xiàn)

    本文主要介紹了golang調用windows平臺的dll庫的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • Go底層channel實現(xiàn)原理及示例詳解

    Go底層channel實現(xiàn)原理及示例詳解

    這篇文章主要介紹了Go底層channel實現(xiàn)原理及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Go疑難雜癥講解之為什么nil不等于nil

    Go疑難雜癥講解之為什么nil不等于nil

    在日常開發(fā)中,可能一不小心就會掉進?Go?語言的某些陷阱里,而本文要介紹的?nil?≠?nil?問題,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-10-10
  • Go語言同步等待組sync.WaitGroup結構體對象方法詳解

    Go語言同步等待組sync.WaitGroup結構體對象方法詳解

    這篇文章主要為大家介紹了Go語言同步等待組sync.WaitGroup結構體對象方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08

最新評論

侯马市| 桑植县| 凤冈县| 定陶县| 海原县| 邯郸市| 伊川县| 太康县| 共和县| 焉耆| 衡东县| 黔南| 五大连池市| 芷江| 海安县| 开鲁县| 萝北县| 句容市| 城市| 新巴尔虎左旗| 桂林市| 垦利县| 丰县| 四子王旗| 上虞市| 博乐市| 洪湖市| 恭城| 西林县| 鹿泉市| 鲁甸县| 闵行区| 西昌市| 化德县| 临邑县| 合水县| 长泰县| 集贤县| 文昌市| 南江县| 互助|