Golang:基本数据类型的转换

Posted 保暖大裤衩LeoLee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang:基本数据类型的转换相关的知识,希望对你有一定的参考价值。

Golang与Java、C等其他语言不同,在不同的数据类型的变量之间赋值的时候,需要显式的转换,也就是说Golang中数据类型不能自动转换。不管是低精度到高精度,还是高精度到低精度,都需要显式的转换。

基本语法

表达式:T(v),T为数据类型,v是需要转换的为V类型的变量。

示例

var i8 int8 = 100
var f32 float32 = float32(i8)
fmt.Printf("f32=%f\\n", f32)
var i32 int32 = int32(i8)
fmt.Printf("i32=%d\\n", i32)

//f32=100.000000
//i32=100

转换溢出(编译不会报错)

var i8 int8
var i64 int64 = 123123123
i8 = int8(i64)
fmt.Printf("i8=%d\\n", i8)

//i8=-77

基本数据类型与string的转换

base type to string

//基本类型与string的转换
var num1 int8 = 26
var num2 uint8 = 95
var num3 float64 = 3.1415926
b := true
var char byte = 'L'
var str string
//fmt.Sprintf方法
str = fmt.Sprintf("%d", num1)
fmt.Printf("str=%s\\n", str)
str = fmt.Sprintf("%d", num2)
fmt.Printf("str=%s\\n", str)
str = fmt.Sprintf("%G", num3)
fmt.Printf("str=%s\\n", str)
str = fmt.Sprintf("%t", b)
fmt.Printf("str=%s\\n", str)
str = fmt.Sprintf("%c", char)
fmt.Printf("str=%s\\n", str)

//strconv函数
str = strconv.FormatInt(int64(num1), 10)
fmt.Printf("str=%s\\n", str)
str = strconv.Itoa(int(num2))
fmt.Printf("str=%s\\n", str)
str = strconv.FormatFloat(num3, 'f', -1, 64)
fmt.Printf("str=%s\\n", str)
str = strconv.FormatBool(b)
fmt.Printf("str=%s\\n", str)

string to base type

str1 := "true"
b, e := strconv.ParseBool(str1) // 可以使用下划线 "_" 忽略error的返回:b, _ := strconv.ParseBool(str1)
fmt.Printf("b=%t\\n", b)
fmt.Printf("e=%v\\n", e)
str2 := "12312414"
num4, _ := strconv.ParseInt(str2, 10, 32)
fmt.Printf("num4=%d, type=%T\\n", num4, num4)
str3 := "3.1415926"
pai, _ := strconv.ParseFloat(str3, 64)
fmt.Printf("pai=%e\\n", pai)

注意:如果string类型不能正确的转基本类型的情况,如string = "LeoLee"转int类型,那么go语言类型转换的结果将会为0。类似的无法正确类型转换的情况,都将会使用目标类型的默认值

以上是关于Golang:基本数据类型的转换的主要内容,如果未能解决你的问题,请参考以下文章

Golang:基本数据类型的转换

Golang:基本数据类型的转换

golang数据类型和各类型转换注意细节图文+代码

Golang-基本数据类型和string 的转换

Golang 基本数据类型

golang之基本数据类型