golang 实现interface{}转其他类型操作
golang中的string是可以转换为byte数组或者rune数组
但是其实byte对应的类型是uint8,而rune对应的数据类型就是int32
所以string可以转换为四种类型
//interface转其他类型————返回值是interface,直接赋值是无法转化的
//interface 转string
var a interface{}
var str5 string
a = "3432423"
str5 = a.(string)
fmt.Println(str5)
//interface 转int
var m interface{}
var m1 int
m = 43
m1 = m.(int)
fmt.Println(m1)
//interface 转float64
var ff interface{}
var ff1 float64
ff = 432.54
ff1 = ff.(float64)
fmt.Println(ff1)
补充:golang interface 转 string,int,float64
看代码吧~
func interface2String(inter interface{}) {
switch inter.(type) {
case string:
fmt.Println("string", inter.(string))
break
case int:
fmt.Println("int", inter.(int))
break
case float64:
fmt.Println("float64", inter.(float64))
break
}
}
func main() {
interface2String("jack")
interface2String(1)
interface2String(12.223)
}
string jack int 1 float64 12.223
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
golang基础之Interface接口的使用
接口是一个或多个方法签名名的集合,定义方式如下 type Interface_Name interface { method_a() string method_b() int .... } 只要某个类型拥有该接口的所有方法签名,就算实现该接口,无需显示声明实现了那个接口,这称为structural Typing package main import "fmt" type USB interface { //定义一个接口:方法的集合 Name() string //Name方法,返回
-
golang struct 实现 interface的方法
golang中,一般strcut包含 interface类型后,struct类型都需要实现 interface导出的接口,从而成为相应的 interface接口类. 实际上,struct包含interface之后,并不需要实现interface的接口,也能成为 interface接口类. 代码如下: type newEr interface { New() } type testInterface interface { newEr Done() <-chan struct{} } type k
-
golang中struct和interface的基础使用教程
前言 本文主要给大家介绍了关于golang中struct和interface的相关内容,是属于golang的基本知识,下面话不多说了,来一起看看详细的介绍吧. struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套:go中的struct类型理解为类,可以定义方法,和函数定义有些许区别:struct类型是值类型. struct定义 type User struct { Name string Age int32 mess string } var user User
-
golang语言如何将interface转为int, string,slice,struct等类型
在golang中,interface{}允许接纳任意值,int,string,struct,slice等,因此我可以很简单的将值传递到interface{},例如: package main import ( "fmt" ) type User struct{ Name string } func main() { any := User{ Name: "fidding", } test(any) any2 := "fidding" test(a
-
golang中interface接口的深度解析
一 接口介绍 如果说gorountine和channel是支撑起Go语言的并发模型的基石,让Go语言在如今集群化与多核化的时代成为一道亮丽的风景,那么接口是Go语言整个类型系列的基石,让Go语言在基础编程哲学的探索上达到前所未有的高度.Go语言在编程哲学上是变革派,而不是改良派.这不是因为Go语言有gorountine和channel,而更重要的是因为Go语言的类型系统,更是因为Go语言的接口.Go语言的编程哲学因为有接口而趋于完美.C++,Java 使用"侵入式"接口,主要表现在实现
-
golang 实现interface{}转其他类型操作
golang中的string是可以转换为byte数组或者rune数组 但是其实byte对应的类型是uint8,而rune对应的数据类型就是int32 所以string可以转换为四种类型 //interface转其他类型----返回值是interface,直接赋值是无法转化的 //interface 转string var a interface{} var str5 string a = "3432423" str5 = a.(string) fmt.Println(str5) //i
-
Golang中interface{}转为数组的操作
interface{} 转为普通类型 我们都知道在golang中interface{}可以代表任何类型,对于像int64.bool.string等这些简单类型,interface{}类型转为这些简单类型时,直接使用 p, ok := t.(bool) p, ok := t.(int64) 如果ok==true的话,就已经类型转换成功. 假设有这样一个场景,我们有一个函数有返回值,但是返回值的类型不定,所以我们的返回值类型只能以接口来代替了. 返回接口类型之后,我们就要对其类型进行判断然后进行类型
-
解决golang 反射interface{}做零值判断的一个重大坑
在对float零值判断时往往只需要和0做==即可,所以曾经int和float都用==0来做对比, 比如下方: in := 0. var tmp interface{} = float32(in) fmt.Println("float 0==0:", in == 0) fmt.Println("float -> interface{} -> float", tmp.(float32) == 0) switch v := tmp.(type) { case
-
Golang中Interface接口的三个特性
原文地址 第一次翻译文章,请各路人士多多指教! 类型和接口 因为映射建设在类型的基础之上,首先我们对类型进行全新的介绍.go是一个静态性语言,每个变量都有静态的类型,因此每个变量在编译阶段中有明确的变量类型,比如像:int.float32.MyType... 比如: type MyInt int var i int var j MyInt 变量i的类型为int,变量j的类型为MyInt,变量i.j具有确定的类型,虽然i.j的潜在类型是一样的,但是在没有转换的情况下他们之间不能相互赋值.在类型中有
-
一文带你了解Golang中interface的设计与实现
目录 前言 接口是什么 iface 和 eface 结构体 _type 是什么 itab 是什么 生成的 itab 是怎么被使用的 itab 关键方法的实现 根据 interfacetype 和 _type 初始化 itab 接口断言过程总览(类型转换的关键) panicdottypeI 与 panicdottypeE iface 和 eface 里面的 data 是怎么来的 convT* 方法 Java 里面的小整数享元模式 总结 在上一篇文章<go interface 基本用法>中,我们了
-
浅谈golang二进制bit位的常用操作
golang作为一热门的兼顾性能 效率的热门语言,相信很多人都知道,在编程语言排行榜上一直都是很亮眼,作为一门强类型语言,二进制位的操作肯定是避免不了的,数据的最小的单位也就是位,尤其是网络中封包.拆包,读取二进制文件等用的特别广泛, 所以学好golang二进制bit位的常用操作还是很必要的,而且很多运算尤其是乘法除法运算,CPU效率是很低的,这时候可以二进制操作代替,不多说了,上干货! package main import ( "fmt" "github.com/imro
-
golang 中string和int类型相互转换
总结了golang中字符串和各种int类型之间的相互转换方式: string转成int: int, err := strconv.Atoi(string) string转成int64: int64, err := strconv.ParseInt(string, 10, 64) int转成string: string := strconv.Itoa(int) int64转成string: string := strconv.FormatInt(int64,10) 字符串到float32/floa
-
浅谈Golang 嵌套 interface 的赋值问题
大家还是直接看代码吧~ package main import ( "fmt" ) func main() { s := map[string]interface{}{ "code":0, "msg":"", "data":map[string]interface{}{ "src":"", }, } s["data"].(map[string]in
-
golang开发安装go-torch火焰图操作步骤
目录 安装 使用 另一种自定义显示方式 代码修改 使用 查看 安装 1. 安装go-torch go get github.com/uber/go-torch 2.安装FlameGraph cd $GOPATH && git clone https://github.com/brendangregg/FlameGraph.git export PATH=$PATH:$GOPATH/FlameGraph [这步一定要设置,生成火焰图时会用到] 3.安装graphviz (CentOS, R
随机推荐
- DB2比较常用与实用sql语句总结
- SQL Server 2005恢复数据库详细图文教程
- 缩放文字,不仅仅只是缩放文字
- 最全的DOS命令帮助程序批处理代码
- 详解iOS中集成ijkplayer视频直播框架
- python刷投票的脚本实现代码
- 仅2行代码的javascript按指定格式显示日期时间效果
- ASP.NET中利用WebClient上传图片到远程服务的方法
- Android使用surfaceView自定义抽奖大转盘
- PHP实现简单聊天室(附源码)第1/2页
- python自动翻译实现方法
- iframe实用操作锦集
- 导致计算机系统“死机”的原因及其预防方法
- C++ 中回调函数详解及简单实例
- PHP中substr()与explode()函数用法分析
- asp.net(c#) RSS功能实现代码
- Apache 解决80端口占用问题
- 在Pycharm中使用GitHub的方法步骤
- 使用swoole 定时器变更超时未支付订单状态的解决方案
- python PyAutoGUI 模拟鼠标键盘操作和截屏功能
