Go语言的几种类型转换

前言

在日常编程中,类型转换是经常需要用到的。因此本文将总结归纳一下Go语言中常见的一些类型转换。
Go语言中的类型转换可以有多种分类方式:
比如按照是否需要声明,可以分为:隐式类型转换和显式类型转换。
可以再根据使用场景划分为3种:显式类型转换、隐式类型转换和断言。(很多地方这里分出来4种,多了一个强制类型转换,但我认为显式类型转换和强制类型转换应该就是一回事。期待大佬解答一下这里他们的分类依据)
再或按照转换方向,比如从整数类型到浮点数类型的转换,或者从浮点数类型到整数类型的转换… …
本文将学习归纳使用场景分类下的情况。

强制类型转换

就是直接强转,可能会导致数据丢失或溢出。

newType := targetType(expression)

其中,newType是要转换的目标类型,targetType是要转换为的类型,expression是要转换的表达式或变量。

例如:

x := 10
y := float64(x)

float64(x)将整数x转换为浮点数类型,并将结果赋值给变量y。

隐式类型转换

隐式类型转换主要出现在接口处,eg:

package main
 
import "fmt"
 
type Animal interface {
   
    Sound()
}
 
type Dog struct {
   
    Breed string
}
 
func (d Dog) Sound() {
   
    fmt.Println("Woof!")
}
 
func demo2(a Animal) {
   
    a.Sound()
}
 
func demo1(d1 interface{
   }) {
   
    // 隐式类型转换——结构体类型转为接口类型
    demo2(d1.(Animal))
}
 
func main() {
   
    d1 := Dog{
   Breed: "滴滴滴"}
    demo1(d1)
}


可以看到,这其中

日常使用中也可能碰见,比如:


func main() {
   
	var x int = 10
	var y float64 = x // 隐式类型转换,将整数类型转换为浮点数类型
	fmt.Println(y)     // 输出:10.0
}

断言

简单来说相当于执行了一个判断逻辑,如果是A类型则正确,反之则强转为A类型,若转换成功则返回,不成功则报错。

通常使用以下语法进行断言:

value, ok := BInterface.(A)

其中,someInterface 是一个接口类型的值,A 是一个具体的类型。value 是转换后的值,ok 是一个布尔值,表示转换是否成功。如果转换成功,value 将包含转换后的值,ok 为 true;如果转换失败,value 将包含零值,ok 为 false。

具体讲解见此文

总结

个人认为日常使用中用的最多的是强制类型转换,亦可通过函数诸如Atoi , Itoa等。
隐式类型转换主要发生在使用接口时,尤其需要注意看得懂。
断言使用在一些附带有判断的场景。诸如一个kafka消息接收时候断言为[]byte类型。

相关推荐

  1. Go语言类型转换

    2024-01-04 13:06:04       43 阅读
  2. Go语言开发IDE

    2024-01-04 13:06:04       30 阅读
  3. go语言数据类型转换

    2024-01-04 13:06:04       12 阅读
  4. Go 语言接口类型转换详解

    2024-01-04 13:06:04       33 阅读
  5. go语言获取变量类型4方式

    2024-01-04 13:06:04       10 阅读
  6. go语言基础strconv类型转换

    2024-01-04 13:06:04       42 阅读
  7. Go语言开发利器:主流IDE优势与应用

    2024-01-04 13:06:04       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-04 13:06:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-04 13:06:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-04 13:06:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-04 13:06:04       20 阅读

热门阅读

  1. Go编程的一些最佳实践

    2024-01-04 13:06:04       33 阅读
  2. Go 语言教程

    2024-01-04 13:06:04       42 阅读
  3. kotlin foreach 循环

    2024-01-04 13:06:04       34 阅读
  4. 开源字符识别 OCR 引擎推荐

    2024-01-04 13:06:04       28 阅读
  5. <HarmonyOS第一课>应用程序框架

    2024-01-04 13:06:04       136 阅读
  6. Backtrader 文档学习-Strategy(下)

    2024-01-04 13:06:04       45 阅读
  7. 【Python】基于socket函数的TCP通信

    2024-01-04 13:06:04       42 阅读
  8. 解析消费增值--私域小程序引领家具行业大走向

    2024-01-04 13:06:04       41 阅读
  9. LeetCode——2487. 从链表中移除节点

    2024-01-04 13:06:04       33 阅读