佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > go 類型轉(zhuǎn)換方式(interface 類型的轉(zhuǎn)換)

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

熱門標(biāo)簽:AI電銷 Linux服務(wù)器 百度競價排名 網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站 服務(wù)外包 呼叫中心市場需求 鐵路電話系統(tǒng)

go 在做類型轉(zhuǎn)換時,報錯:

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

原因:

go 的在 interface 類型轉(zhuǎn)換的時候, 不是使用類型的轉(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{}的類型轉(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"))
}

上面的代碼如果類型不匹配,會產(chǎn)生panic錯誤,如果想不產(chǎn)生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

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

您可能感興趣的文章:
  • 手把手教你導(dǎo)入Go語言第三方庫
  • golang gopm get -g -v 無法獲取第三方庫的解決方案
  • golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫logrus的詳解
  • golang值類型轉(zhuǎn)換成[]uint8類型的操作
  • Mongodb 利用mongoshell進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)方法
  • Go語言string,int,int64 ,float之間類型轉(zhuǎn)換方法
  • GO語言類型轉(zhuǎn)換和類型斷言實(shí)例分析
  • Go 第三方庫之類型轉(zhuǎn)換問題

標(biāo)簽:仙桃 崇左 衡水 湘潭 黃山 湖南 蘭州 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go 類型轉(zhuǎn)換方式(interface 類型的轉(zhuǎn)換)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    旅游| 桃园县| 安丘市| 尖扎县| 延安市| 江都市| 龙游县| 汝城县| 郑州市| 香港| 岑巩县| 金华市| 三河市| 拜泉县| 镇康县| 凉山| 沭阳县| 龙泉市| 昌邑市| 泰宁县| 濮阳市| 玛多县| 通河县| 淮北市| 永福县| 湟中县| 仙桃市| 台州市| 北辰区| 腾冲县| 湖南省| 浙江省| 子洲县| 苍山县| 巴里| 昭通市| 瓦房店市| 阿瓦提县| 抚远县| 宿松县| 高州市|