欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ù)據(jù),就會報錯,因為通道已經關閉,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語言reflect包的反射機制基本用法示例

    Go語言reflect包的反射機制基本用法示例

    反射在處理接口和類型斷言、開發(fā)通用功能或者設計框架時尤為重要,本文將深入探索 Go 語言中的反射機制,通過具體的示例展示如何使用?reflect?包,讓你能夠在 Go 項目中有效地利用這一強大的工具
    2023-11-11
  • Golang語言的跨平臺UI工具包fyne使用詳解

    Golang語言的跨平臺UI工具包fyne使用詳解

    這篇文章主要為大家介紹了Golang語言的跨平臺UI工具包fyne使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Golang內存分配機制詳解

    Golang內存分配機制詳解

    Go 語言的內存分配機制是理解和優(yōu)化 Go 程序性能的關鍵,在 Go 中,內存管理是自動進行的,這得益于 Go 的垃圾回收機制,了解內存如何分配和回收,可以幫助我們寫出更高性能的代碼,本文將深入講解下 Go 內存分配機制,需要的朋友可以參考下
    2023-12-12
  • 修改并編譯golang源碼的操作步驟

    修改并編譯golang源碼的操作步驟

    這篇文章主要介紹了修改并編譯golang源碼的操作步驟,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2021-07-07
  • 深度解密Go語言中字符串的使用

    深度解密Go語言中字符串的使用

    在編程語言中,字符串發(fā)揮著重要的角色。這篇文章就來帶大家一起深度解密Go語言中的字符串,文中的示例代碼講解詳細,需要的可以參考一下
    2022-09-09
  • GO中的slice使用簡介(源碼分析slice)

    GO中的slice使用簡介(源碼分析slice)

    slice(切片)是go中常見和強大的類型,這篇文章不是slice使用簡介,從源碼角度來分析slice的實現(xiàn),slice的一些迷惑的使用方式,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • golang讀取yaml配置文件的示例代碼

    golang讀取yaml配置文件的示例代碼

    在項目開發(fā)中,經常需要把一些配置文件常量提取到統(tǒng)一配置文件進行維護,go項目在開發(fā)中常常把需要維護的常量或者配置提取到y(tǒng)aml文件,所以本文主要來為大家介紹一下golang如何讀取yaml配置文件吧
    2023-11-11
  • Go一站式配置管理工具Viper的使用教程

    Go一站式配置管理工具Viper的使用教程

    Viper是一個方便Go語言應用程序處理配置信息的庫,它可以處理多種格式的配置,這篇文章主要為大家介紹了它的具體使用教程,需要的可以參考下
    2023-08-08
  • Go語言基礎函數(shù)包的使用學習

    Go語言基礎函數(shù)包的使用學習

    本文通過一個實現(xiàn)加減乘除運算的小程序來介紹go函數(shù)的使用,以及使用函數(shù)的注意事項,并引出了對包的了解和使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Go設置http請求超時的方法實現(xiàn)

    Go設置http請求超時的方法實現(xiàn)

    這篇文章主要介紹了Go設置http請求超時的方法實現(xiàn),最近接手了一個老項目進行維護,發(fā)現(xiàn)其中有個關于 http 請求的方法設置的 timeout 沒有生效,很奇怪,一開始查看代碼并沒有發(fā)現(xiàn)什么可疑點,后查看了源碼,打斷點調試才發(fā)現(xiàn)問題所在,這里簡單記錄復盤一下
    2024-08-08

最新評論