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

go 類型轉換方式(interface 類型的轉換)

 更新時間:2021年05月04日 10:11:11   作者:一抹黑黑黑  
這篇文章主要介紹了go 類型轉換方式(interface 類型的轉換),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

go 在做類型轉換時,報錯:

cannot convert m (type interface {}) to type Msg: need type assertion

原因:

go 的在 interface 類型轉換的時候, 不是使用類型的轉換, 而是使用

t,ok := i.(T)

例子:

//處理網絡消息
func ProcessMsg(m interface{}){
    //var a interface{} = m
    //Msg(m)
    msg := m.(*Msg)

補充:go []interface{}的類型轉換

看代碼吧~

package main 
import (
    "fmt"
    "strings"
)
 
func getName(params ...interface{}) string {
    var stringSlice []string
    for _, param := range params {
        stringSlice = append(stringSlice, param.(string))
    }   
    return strings.Join(stringSlice, "_")
}
 
func main() {
    fmt.Println(getName("redis", "slave", "master"))
}

上面的代碼如果類型不匹配,會產生panic錯誤,如果想不產生panic錯誤

str, ok := param.(string)

如果ok為false,則str為空,不報錯。

也可以這樣:

package main 
import (
    "fmt"
    "reflect"
    "strings"
)
 
func getName(params ...interface{}) string {
    var stringSlice []string
    for _, param := range params {
        stringSlice = append(stringSlice, param.(string))
    }   
    return strings.Join(stringSlice, "_")
}
 
func main() {
    var aa []interface{} = make([]interface{}, 3)
    aa[0] = "redis" 
    aa[1] = "slave" 
    aa[2] = "master" 
    fmt.Println(reflect.TypeOf(aa))
    fmt.Println(reflect.TypeOf(aa[0]))
    fmt.Println(getName(aa...))
}

輸出:

[]interface {}

string

redis_slave_master

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • Go語言變量與基礎數(shù)據(jù)類型詳情

    Go語言變量與基礎數(shù)據(jù)類型詳情

    Go 是靜態(tài)(編譯型)語言,是區(qū)別于解釋型語言的弱類型語言(靜態(tài):類型固定,強類型:不同類型不允許直接運算),下面文章將對其進行詳細介紹,需要的朋友可以參考一下
    2021-09-09
  • 使用Go?goroutine實現(xiàn)并發(fā)的Clock服務

    使用Go?goroutine實現(xiàn)并發(fā)的Clock服務

    這篇文章主要為大家詳細介紹了如何使用Go?goroutine實現(xiàn)并發(fā)的Clock服務,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-06-06
  • Go語言中使用flag包對命令行進行參數(shù)解析的方法

    Go語言中使用flag包對命令行進行參數(shù)解析的方法

    這篇文章主要介紹了Go語言中使用flag包對命令行進行參數(shù)解析的方法,文中舉了一個實現(xiàn)flag.Value接口來自定義flag的例子,需要的朋友可以參考下
    2016-04-04
  • Go實現(xiàn)自己的網絡流量解析和行為檢測引擎原理

    Go實現(xiàn)自己的網絡流量解析和行為檢測引擎原理

    這篇文章主要為大家介紹了Go實現(xiàn)自己的網絡流量解析和行為檢測引擎原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Go語言中兩個比較流行的緩存庫使用示例

    Go語言中兩個比較流行的緩存庫使用示例

    緩存是計算機科學中的一個重要概念,設想某個組件需要訪問外部資源,它向外部源請求資源,接收并使用資源,這些步驟都需要花費時間,下面這篇文章主要給大家介紹了關于Go語言中兩個比較流行的緩存庫使用的相關資料,需要的朋友可以參考下
    2024-04-04
  • Go語言開發(fā)前后端不分離項目詳解

    Go語言開發(fā)前后端不分離項目詳解

    這篇文章主要為大家介紹了Go語言開發(fā)前后端不分離項目詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 淺談一下前端http與https有什么區(qū)別

    淺談一下前端http與https有什么區(qū)別

    這篇文章主要介紹了淺談一下前端http與https有什么區(qū)別,現(xiàn)今大部分的網站都已經使用了 https 協(xié)議,那么https對比http協(xié)議有哪些不同呢,需要的朋友可以參考下
    2023-04-04
  • Go使用Viper庫讀取YAML配置文件的示例代碼

    Go使用Viper庫讀取YAML配置文件的示例代碼

    Viper是適用于Go應用程序的完整配置解決方案,它被設計用于在應用程序中工作,并且可以處理所有類型的配置需求和格式,本文給大家介紹了Go使用Viper庫讀取YAML配置文件的方法,需要的朋友可以參考下
    2024-05-05
  • 深入探索Go語言中的高效數(shù)據(jù)結構堆

    深入探索Go語言中的高效數(shù)據(jù)結構堆

    堆,作為一種基本的數(shù)據(jù)結構,以其在優(yōu)先隊列和排序算法中提供高效解決方案的能力而聞名。在本文中,我們將深入探討堆的內部工作原理,包括其特性、實現(xiàn)細節(jié)以及在現(xiàn)代編程中的應用
    2008-06-06
  • Golang觀察者模式優(yōu)化訂單處理系統(tǒng)實例探究

    Golang觀察者模式優(yōu)化訂單處理系統(tǒng)實例探究

    當涉及到訂單處理系統(tǒng)時,觀察者設計模式可以用于實現(xiàn)訂單狀態(tài)的變化和通知,在這篇文章中,我們將介紹如何使用Golang來實現(xiàn)觀察者設計模式,并提供一個基于訂單處理系統(tǒng)的代碼示例
    2024-01-01

最新評論