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

go 類(lèi)型轉(zhuǎn)換方式(interface 類(lèi)型的轉(zhuǎn)換)

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

go 在做類(lèi)型轉(zhuǎn)換時(shí),報(bào)錯(cuò):

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

原因:

go 的在 interface 類(lèi)型轉(zhuǎn)換的時(shí)候, 不是使用類(lèi)型的轉(zhuǎn)換, 而是使用

t,ok := i.(T)

例子:

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

補(bǔ)充:go []interface{}的類(lèi)型轉(zhuǎn)換

看代碼吧~

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"))
}

上面的代碼如果類(lèi)型不匹配,會(huì)產(chǎn)生panic錯(cuò)誤,如果想不產(chǎn)生panic錯(cuò)誤

str, ok := param.(string)

如果ok為false,則str為空,不報(bào)錯(cuò)。

也可以這樣:

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 一文帶你探索Golang計(jì)時(shí)器的奧秘

    一文帶你探索Golang計(jì)時(shí)器的奧秘

    在?Golang?中,計(jì)時(shí)器(timer)是一種常見(jiàn)的工具,用于定期執(zhí)行某個(gè)任務(wù)或者在指定時(shí)間后觸發(fā)某個(gè)事件。本文將深入探討?Golang?計(jì)時(shí)器的實(shí)現(xiàn)原理和使用方法,幫助大家更好地理解和應(yīng)用計(jì)時(shí)器
    2023-05-05
  • Golang截取字符串方法示例講解及對(duì)比

    Golang截取字符串方法示例講解及對(duì)比

    這篇文章主要介紹了Golang截取字符串方法,文中介紹了使用rune函數(shù)和utf包以及range遍歷的方式,熟練掌握這些可以幫助我們更方便地處理字符串,提高編程效率和代碼質(zhì)量,感興趣的同學(xué)可以參考下文
    2023-05-05
  • Golang實(shí)現(xiàn)web文件共享服務(wù)的示例代碼

    Golang實(shí)現(xiàn)web文件共享服務(wù)的示例代碼

    這篇文章主要介紹了Golang實(shí)現(xiàn)web文件共享服務(wù)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Windows環(huán)境下vscode-go安裝筆記(不支持32位)

    Windows環(huán)境下vscode-go安裝筆記(不支持32位)

    這篇文章主要介紹了Windows環(huán)境下vscode-go安裝筆記(不支持32位),需要的朋友可以參考下
    2017-02-02
  • Go 中 slice 的 In 功能實(shí)現(xiàn)探索

    Go 中 slice 的 In 功能實(shí)現(xiàn)探索

    這篇文章主要介紹了Go 中 slice 的 In 功能實(shí)現(xiàn)探索,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • goland?導(dǎo)入github包報(bào)紅問(wèn)題解決

    goland?導(dǎo)入github包報(bào)紅問(wèn)題解決

    本文主要介紹了Go項(xiàng)目在GoLand中導(dǎo)入依賴(lài)標(biāo)紅問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • GO語(yǔ)言類(lèi)型查詢(xún)類(lèi)型斷言示例解析

    GO語(yǔ)言類(lèi)型查詢(xún)類(lèi)型斷言示例解析

    這篇文章主要為大家介紹了GO語(yǔ)言類(lèi)型判斷及類(lèi)型斷言,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • golang 實(shí)現(xiàn)interface{}轉(zhuǎn)其他類(lèi)型操作

    golang 實(shí)現(xiàn)interface{}轉(zhuǎn)其他類(lèi)型操作

    這篇文章主要介紹了golang 實(shí)現(xiàn)interface{}轉(zhuǎn)其他類(lèi)型操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Golang表示枚舉類(lèi)型的詳細(xì)講解

    Golang表示枚舉類(lèi)型的詳細(xì)講解

    go 語(yǔ)言枚舉類(lèi)型是這么用的?在什么場(chǎng)景下會(huì)用到枚舉?本文對(duì) go 語(yǔ)言枚舉做了詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧
    2021-09-09
  • Golang之defer 延遲調(diào)用操作

    Golang之defer 延遲調(diào)用操作

    這篇文章主要介紹了Golang之defer 延遲調(diào)用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12

最新評(píng)論