Go语言--语法基础4--基本数据类型--类型转换

Go 是一种强类型的语言,所以如果在赋值的时候两边类型不一致会报错。一个类型的值可以被转换成另一种类型的值。由于 Go 语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明。

强制类型转换语法

使用 type (a) 这种形式来进行强制类型转换,比如:

复制代码
var a int32 = 10
var b int64 = int64(a)

通过在变量前面添加指定类型,就可以进行强制类型转换。

注意事项

高位转低位的时候,需要注意,会存在精度丢失。比如上述 16 转 8 位的时候,就丢失了:

复制代码
var n1 int16 = 130
fmt.Println(int8(n1)) // 变成 -126

其他常用类型转换

string 转成 int

复制代码
int, err := strconv.Atoi(string)

int 转成 string

复制代码
string := strconv.Itoa(int)

string 转成 int64

复制代码
int64, err := strconv.ParseInt(string, 10, 64)

int64 转成 string

复制代码
string := strconv.FormatInt(int64, 10)

float 转 string

复制代码
func FormatFloat(f float64, fmt byte, prec, bitSize int) string

比如:

复制代码
package main

import (
    "fmt"
    "strconv"
)

func main() {
    num := 250.56
    str := strconv.FormatFloat(num, 'f', 4, 64)
    fmt.Printf("type:%T value:%#v\n", str, str)
}

输出:

复制代码
type:string value:"250.5600"

类型转换的规则

类型转换只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将 int16 转换为 int32)。

当从一个取值范围较大的类型转换到取值范围较小的类型时(将 int32 转换为 int16 或将 float32 转换为 int),会发生精度丢失(截断)的情况。浮点数在转换为整型时,会将小数部分去掉,只保留整数部分。

相关推荐
老前端的功夫3 分钟前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287924 分钟前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本6 分钟前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
止语Lab16 分钟前
从手动到框架:Go DI 演进的三个拐点
开发语言·后端·golang
yaoxin52112330 分钟前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
小短腿的代码世界34 分钟前
Qt日志系统深度解析:从qDebug到企业级日志框架
开发语言·qt
REDcker1 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
我命由我123453 小时前
Kotlin 开发 - lateinit 关键字
android·java·开发语言·kotlin·android studio·android-studio·android runtime
Halo_tjn3 小时前
Java Set集合相关知识点
java·开发语言·算法
Daybreak3 小时前
Elasticsearch 里的索引和 Mapping,到底是什么关系?
后端