广告
返回顶部
首页 > 资讯 > 后端开发 > GO >go 类型转换方式(interface 类型的转换)
  • 929
分享到

go 类型转换方式(interface 类型的转换)

GOinterface类型转换 2022-06-07 20:06:53 929人浏览 独家记忆
摘要

Go 在做类型转换时,报错: cannot convert m (type interface {}) to type Msg: need type assertion 原

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。


您可能感兴趣的文档:

--结束END--

本文标题: go 类型转换方式(interface 类型的转换)

本文链接: https://www.lsjlt.com/news/30621.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • go 类型转换方式(interface 类型的转换)
    go 在做类型转换时,报错: cannot convert m (type interface {}) to type Msg: need type assertion 原...
    99+
    2022-06-07
    GO interface 类型转换
  • go类型转换及与C的类型转换方式
    GO类型转换及与C的类型转换 类型转换 语法 dst := float32(src) 示例 var num int = 520 f32 := float32(num) i6...
    99+
    2022-06-07
    GO
  • golang interface类型转换怎么实现
    在Go语言中,可以通过类型断言来实现接口类型的转换。 使用类型断言的语法为: value, ok := interfaceVar.(...
    99+
    2023-10-20
    golang
  • golang怎么对interface类型进行转换
    Go语言中的interface是一个非常特殊的类型,它可以抽象出任何具有一定特征的数据类型,并且可以进行类型转换。这一特性使得interface在Go语言中发挥着非常重要的作用,但是interface类型的转换也是一个比较复杂的问题,需要我...
    99+
    2023-05-14
    interface go语言 Golang
  • golang如何对interface类型进行转换
    这篇文章主要介绍了golang如何对interface类型进行转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang如何对interface类型进行转换文章都会有所收获,下面我们一起来看看吧。inter...
    99+
    2023-07-05
  • ORACLE隐式类型转换
      隐式类型转换简介   通常ORACLE数据库存在显式类型转换(Explicit Datatype Conversion)和隐式类型转换(Implicit Datatype Conversion)两种类型转换方式。如果进行比较或...
    99+
    2020-03-25
    ORACLE隐式类型转换
  • Python数字类型的转换方式
    这篇文章主要讲解了“Python数字类型的转换方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python数字类型的转换方式”吧! Python 数字数据类型用于存储数值。数据类...
    99+
    2023-06-04
  • mysql类型转换
    语法: CAST (expr AS type) 类型: BINARY # 二进制字符串 CHAR(n) # 普通字符串 DATE # ...
    99+
    2022-10-18
  • C#数据类型转换(显式转型、隐式转型、强制转型)
    C# 的类型转换有显式转型 和 隐式转型 两种方式。 显式转型:有可能引发异常、精确度丢失及其他问题的转换方式。需要使用手段进行转换操作。隐式转型:不会改变原有数据精确度、引发异常,...
    99+
    2022-11-12
  • C语言隐式类型转换与强制类型转换的方法是什么
    本篇内容主要讲解“C语言隐式类型转换与强制类型转换的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言隐式类型转换与强制类型转换的方法是什么”吧!类型转换数据有不同的类型,不同类型数...
    99+
    2023-06-25
  • java的类型转换
    有关int与string的互转[@more@]如何将字串 String 转换成整数 int A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([...
    99+
    2023-06-03
  • JavaScript类型转换的方法
    这篇文章主要讲解了“JavaScript类型转换的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript类型转换的方法”吧!  ...
    99+
    2022-10-19
  • golang类型推断与隐式类型转换
    目录前言一、常量的隐式类型转换1.常量的声明2.常量的类型转换3.隐式转换的原理二、变量的类型推断1.类型推断的原理三、类型推断示例分析总结前言 golang类型推断可以省略类型,像...
    99+
    2022-11-13
  • C#类型转换之自定义隐式转换和显式转换
    目录前言基础知识示例代码实际应用问题答案报错其他应用和设计读音前言 有时我们会遇到这么一种情况:在json数据里,数组里的数据类型不一致,导致我们不能直接反序列化为目标类型。最终我们...
    99+
    2022-11-13
  • Go interface{} 转切片类型的实现方法
    遇到这样一个情况想将变量v转化为[]string类型 var v interface{} a := []interface{}{"1", "2"} v = a // v 这时还是in...
    99+
    2022-11-13
  • java如何实现类型转换与强制类型转换
    这篇文章主要介绍了java如何实现类型转换与强制类型转换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。java类型转换与强制类型转换如果你以前有编程经验,那么你已经知道把一种...
    99+
    2023-06-03
  • SpringMVC @RequestBody Date类型的Json转换方式
    目录SpringMVC @RequestBody Date类型的Json转换通过GsonBuilder设置DateFormat的格式以零配置框架为例以零配置形式框架下的代码实现为例讲...
    99+
    2022-11-12
  • python bytes类型转换
    python bytes 类型转换bytes,字节: 而一系列不可改变的介于0-255之间的数字被称为bytes对象。每一个byte可以是一个ASCII字符或者十六进制数从\x00到\xff。    不能对bytes对象直接复制,可以将by...
    99+
    2023-01-31
    类型 python bytes
  • golang bool 类型转换
    在 Golang 中,bool 类型是一个布尔类型,它只有两个值:true 和 false。在某些情况下,我们需要将 bool 类型转换成其他类型,例如整型、字符串等。那么,Golang 中 bool 类型的转换怎么做呢?以下是详细说明:b...
    99+
    2023-05-15
  • golang json 类型转换
    在 Golang 中,JSON 是一种重要的数据格式,因为其可以方便的进行数据传输和存储。在处理 JSON 数据时,类型转换是非常常见的操作,本文将介绍 Golang 中的 JSON 类型转换。JSON 数据类型在进行 JSON 类型转换之...
    99+
    2023-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作