美文网首页
Go语言 类型转换,类型断言,类型开关

Go语言 类型转换,类型断言,类型开关

作者: 小杰的快乐时光 | 来源:发表于2018-08-18 22:49 被阅读0次

类型转换
Go语言中提供了一种不同类型但是相互兼容的可以相互转换的方式,这种方式是非常有用且安全的。非数值间相互转换不会丢失精度,数值间相互转换就需要考虑精度可能丢失的情况。
string,int,float类型转换

//string到int
int,err:=strconv.Atoi(string)
//string到int64
int64, err := strconv.ParseInt(string, 10, 64)
//int到string
string:=strconv.Itoa(int)  等价于 s := strconv.FormatInt(int64(i), 10)
//int64到string
string:=strconv.FormatInt(int64,10)
//string到float32(float64)
float,err := strconv.ParseFloat(string,32/64)
//float到string
string := strconv.FormatFloat(float32, 'E', -1, 32)
string := strconv.FormatFloat(float64, 'E', -1, 64)

类型断言
在处理外部源接收到的数据,想要创建一个通用函数及在进行面向对象编程时,我们会需要使用interface{}类型。我们可以使用类型断言将一个interface{}类型的值转换为实际数据的值。
使用类型断言有以下两种方式

① 安全类型断言
resultType,boolean := expression.(Type) 
②非安全类型断言,失败时会panic()
resultType,boolean := expression.(Type) 

实例

func main() {
   var a interface{} = 1
   var b interface{} = "abc"
   c,bool:= a.(int)
   d := b.(string)
   fmt.Println(c,bool)
   fmt.Println(d)
}
-----output-----
1 true
abc

类型开关
如果变量类型是许多类型中的一种,那么我们使用switch配合interface{}来筛选

func classifier(items ...interface{})  {
   for i,x := range items {
      switch x.(type) {
      case bool:
         fmt.Printf("type #%d is bool",i)
      case float64:
         fmt.Printf("type #%d is float64",i)
      case string:
         fmt.Printf("type #%d is string",i)
      case int:
         fmt.Printf("type #%d is int",i)
      default:
         fmt.Printf("type is unknow")
      }
   }
}

相关文章

  • Go语言 类型转换,类型断言,类型开关

    类型转换Go语言中提供了一种不同类型但是相互兼容的可以相互转换的方式,这种方式是非常有用且安全的。非数值间相互转换...

  • Go语言类型转换和类型断言

    Go语言的类型转换和类型断言: 类型转换在编译期完成,包括强制转换和隐式转换 类型断言在运行时确定,包括安全类型断...

  • 类型转换和类型断言

    go语言不允许隐式类型转换,而类型转换和类型断言的本质,就是把一个类型转换到另一个类型。 一、类型转换 1.语法:...

  • 第04天(面对对象编程)_04

    16_接口的继承.go 17_接口转换.go 18_空接口.go 19_类型断言:if.go 20_类型断言:sw...

  • 03-数据类型转换

    数值类型转换 C语言中存在显式转换和隐式转换 Go语言中只有显式转换 Go语言中数值类型转换注意点 数值类型转换为...

  • Go语言类型转换

    类型转换 Go语言和C语言不一样,Go语言没有隐式转换,只有显示转换 格式和C语言一样 Go语言类型转换被用于转换...

  • go语言中的类型断言与类型转换

    在读他人源码的时候碰到一个自己没读懂的写法: if r,ok:=w.(io.Reader);ok{r.Read(&...

  • 2-7 Go --- 类型转换

    Go 语言没有隐式类型转换,类型转换都是显示的强制转换。明明白白写清楚需要转换的类型。 强制类型转换只能在两个类型...

  • Go 语言基础——变量常量的定义

    go语言不支持隐式类型转换,别名和原有类型也不能进行隐式类型转换go语言不支持隐式转换 变量 变量声明 声明变量不...

  • go笔记 - 类型转换

    go 存在 4 种类型转换分别为:断言、强制、显式、隐式。 通常说的类型转换是指断言,强制在日常不会使用到、显示是...

网友评论

      本文标题:Go语言 类型转换,类型断言,类型开关

      本文链接:https://www.haomeiwen.com/subject/xjsqiftx.html