go语言之类型转换

Posted

tags:

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

go语言的类型不能混合使用

fmt.Println("abc" + 1)

会报字符串和整数不能这么操作

se := 12.0
wu := 5
fmt.Println(se * wu)
(mismatched types float64 and int)

一个是float一个是int不允许操作

例如上面,我们需要把wu这个变量类型转换为float64.

fmt.Println(se * float64(wu))

通过数据类型同名的函数包裹着变量就可以返回新类型。当然也可以把float类型转成int,但是这样会把小数部分直接截断。

mm := 12.5
fmt.Println(int(mm))

但是直接使用常量就不行了。

fmt.Println(int(12.5))

总得来说一般从取值范围小的类型转换为取值范围大的类型总是安全的,其他方式的类型转换则存在风险。有一个技巧,就是把范围大的类型转为小范围类型时,用值与小范围的值进行比较,看是否在范围之内,如果在才允许转换。

fmt.Println("abc" + strconv.Itoa(1))

通过strconv.Itoa(1)把数字1转成字符串再进行合并就没有问题了。

hh, _ := strconv.Atoi("1")
fmt.Println(hh)

通过strconv.Atoi可以把字符串转换成数字,这样就可以使用数字进行相应的运算。

布尔值转成字符串

nn := false
nntext := fmt.Sprintf("%v", nn)
fmt.Println(nntext)

字符串转换成布尔值

ok := "no"
oo := (ok == "yes")
fmt.Println(oo)

以上是关于go语言之类型转换的主要内容,如果未能解决你的问题,请参考以下文章

Go语言编程之字符串与其他数据类型之间的转换

go语言碎片整理之strconv

Go语言之读取yaml配置文件,转换成struct结构,json形式输出

Go语言之Go语言反射

go语言之字符串指针数组切片

cgo之类型转换