内容简介:Go 在不同类型的变量之间赋值时需要显示转换,即 Go 语言中数据类型不能自动转换。注意事项:示例:
Go 在不同类型的变量之间赋值时需要显示转换,即 Go 语言中数据类型不能自动转换。
T(v) // 将值v转换为类型T
注意事项:
- 数据类型转换可以从表示范围小—>表示范围大,也可以范围大到范围小。
- 范围大到范围小的转换时,可能会出现结果溢出,但是不会报错。因此转换时,需要考虑范围。
示例:
package main import "fmt" func main() { var i = 1000 i64 := int64(i) fmt.Printf("%T %d\n", i64, i64) f := float64(i) fmt.Printf("%T %f\n", f, f) i8 := int8(i) fmt.Printf("%T %d\n", i8, i8) }
结果:
int64 1000 float64 1000.000000 int8 -24
基本数据类型转 String
fmt.Sprintf
格式化函数 Sprintf 根据 format 参数生成格式化的字符串并返回该字符串:
func Sprintf(formatstring, a ...interface{})string
%
示例:
package main import "fmt" func main() { // 整型转字符串 var i = 10 iTos := fmt.Sprintf("%v", i) fmt.Printf("%T, %q\n", iTos, iTos) // 浮点型转字符串 var f = 23.23 fTos := fmt.Sprintf("%v", f) fmt.Printf("%T, %q\n", fTos, fTos) // 字节型转字符串 var c byte = 'a' cTos := fmt.Sprintf("%v", c) fmt.Printf("%T, %q\n", cTos, cTos) // 布尔型转字符串 var b bool = true bTos := fmt.Sprintf("%v", b) fmt.Printf("%T, %q\n", bTos, bTos) }
结果:
string, "10" string, "23.23" string, "97" string, "true"
strconv
使用 strconv
包中的函数:
- 整型转字符串
func FormatInt(iint64, baseint)string func Itoa(iint) string // FormatInt的缩写 func FormatUint(iuint64, baseint) string
返回 i
的 base
进制的字符串表示。 base
必须在 2 到 36 之间,结果中会使用小写字母 'a'
到 'z'
表示大于 10 的数字。
- 浮点型转字符串
func FormatFloat(ffloat64, fmtbyte, prec, bitSizeint)string
函数将浮点数表示为字符串并返回。 bitSize
表示 f
的来源类型(32:float32、64:float64),会据此进行舍入。 fmt
表示格式: 'f'(-ddd.dddd)
、 'b'(-ddddp±ddd,指数为二进制)
、 'e'(-d.dddde±dd,十进制指数)
、 'E'(-d.ddddE±dd,十进制指数)
、 'g'(指数很大时用'e'格式,否则'f'格式)
、 'G'(指数很大时用'E'格式,否则'f'格式)
。 prec
控制精度(排除指数部分):对 'f'、'e'、'E'
,它表示小数点后的数字个数;对 'g'、'G'
,它控制总的数字个数。如果 prec
为 -1,则代表使用最少数量的、但又必需的数字来表示 f
。
- 布尔型转字符串
func FormatBool(bbool)string
示例:
package main import "strconv" func main() { // 整型转字符串 var i = 10 // 默认类型为int iTos := strconv.FormatInt(int64(i), 10) // 注意,传入参数的类型必须匹配 fmt.Printf("%T, %q\n", iTos, iTos) // 浮点型转字符串 var f = 23.23 // 默认类型为float64 fTos := strconv.FormatFloat(f, 'f', 4, 64) fmt.Printf("%T, %q\n", fTos, fTos) // 布尔型转字符串 var b = true bTos := strconv.FormatBool(b) fmt.Printf("%T, %q\n", bTos, bTos) }
结果:
string, "10" string, "23.2300" string, "true"
String 转基本数据类型
strconv
使用 strconv
包中的函数:
- 字符串转整型
func ParseInt(sstring, baseint, bitSizeint)(iint64, err error) func ParseUint(sstring, baseint, bitSizeint) (nuint64, err error) func Atoi(sstring) (iint, err error)
ParseInt
返回字符串表示的整数值,接受正负号。 ParseUint
则不接受正负号,用于无符号整型。 base
指定进制(2 到 36),如果 base 为 0,则会从字符串前置判断,”0x” 是 16 进制,”0”是 8 进制,否则是 10 进制; bitSize
指定结果必须能无溢出赋值的整数类型, 0、8、16、32、64
分别代表 int、int8、int16、int32、int64
;返回的 err 是 *NumErr 类型的,如果语法有误,err.Error = ErrSyntax;如果结果超出类型范围err.Error = ErrRange。
- 字符串转浮点型
func ParseFloat(sstring, bitSizeint)(ffloat64, err error)
ParseFloat
解析一个表示浮点数的字符串并返回其值。 bitSize
指定转换结果的类型,32 是 float32
(返回值可以不改变精确值的赋值给 float32),64 是 float64
;返回值 err 是 *NumErr 类型的,语法有误的,err.Error=ErrSyntax;结果超出表示范围的,返回值 f 为 ±Inf,err.Error= ErrRange。
- 字符串转布尔型
func ParseBool(strstring)(valuebool, err error)
ParseBool
返回字符串表示的 bool
值。它接受 1、0、t、f、T、F、true、false、True、False、TRUE、FALSE
,否则返回错误。
示例:
package main import "strconv" func main() { // 字符串转整型 var is = "100" sToi, _ := strconv.ParseInt(is, 10, 32) fmt.Printf("%T, %d\n", sToi, sToi) // 字符串转浮点型 var fs = "23.23" sTof, _ := strconv.ParseFloat(fs, 32) fmt.Printf("%T, %f\n", sTof, sTof) // 字符串转布尔型 var bs = "true" sTob, _ := strconv.ParseBool(bs) fmt.Printf("%T, %t\n", sTob, sTob) }
结果:
int64, 100 float64, 23.230000 bool, true
以上所述就是小编给大家介绍的《Golang 笔记-基本数据类型转换》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Kafka权威指南
Neha Narkhede、Gwen Shapira、Todd Palino / 薛命灯 / 人民邮电出版社 / 2017-12-26 / 69.00元
每个应用程序都会产生数据,包括日志消息、度量指标、用户活动记录、响应消息等。如何移动数据,几乎变得与数据本身一样重要。如果你是架构师、开发者或者产品工程师,同时也是Apache Kafka新手,那么这本实践指南将会帮助你成为流式平台上处理实时数据的专家。 本书由出身于LinkedIn的Kafka核心作者和一线技术人员共同执笔,详细介绍了如何部署Kafka集群、开发可靠的基于事件驱动的微服务,......一起来看看 《Kafka权威指南》 这本书的介绍吧!