• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    go 类型转换方式(interface 类型的转换)
    POST TIME:2021-10-18 17:05

    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语言第三方库
    • golang gopm get -g -v 无法获取第三方库的解决方案
    • golang 输出重定向:fmt Log,子进程Log,第三方库logrus的详解
    • golang值类型转换成[]uint8类型的操作
    • Mongodb 利用mongoshell进行数据类型转换的实现方法
    • Go语言string,int,int64 ,float之间类型转换方法
    • GO语言类型转换和类型断言实例分析
    • Go 第三方库之类型转换问题
    上一篇:Golang的func参数及返回值操作
    下一篇:goland设置颜色和字体的操作
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信