go09 类型转换

简介: go09 类型转换

go09 类型转换

类型不能混着用

连接两个字符串,使用 + 运算符:

如果想连接字符串和数值,是会报错的:

d570b7a18b18444a903bb69f91c7739a.png


整型和浮点类型也不能混着用:

数值类型间的转换

下例中,如果想把 age 转化成 浮点类型,需要使用目标类型将其“包裹”起来:


从浮点类型转为整数类型

可以从浮点类型转化为整数类型,小数点后边的部分会被截断,而不是舍入:

无符号和有符号整数类型之间也需要转换。

不同大小的整数类型之间也需要转换


类型转换时需谨慎

“环绕行为”:



可以通过 math 包提供的 max、min 常量,来判断是否超过最大最小值:

字符串转换

想把 rune、byte 转化为 string,语法是一样的:


a04ae05974954b9dbec2be93819eb313.png

fbbd4f8d164b4391b97f902899395ca6.png

想把数值转化为string,它的值必须能转化为 code point。

strconv 包的 Itoa 函数就可以做这件事:

Itoa 是 Integer to ASCII 的意思。


Unicode 是 ASCII 的超集,它们前 128 个 code points 是一样的(数字、英文字母、常用标点)。


另外一种把数值转化为 string 的方式是使用 Sprintf 函数,和 Printf 略类似,但是会返回一个 string:

e7b3d1dc3018451e8e680e3200db4b8e.png

cf55d750af684002a8386f8d12f44fc1.png


strconv 包里面还有个 Atoi(ASCII to Integer) 函数。

由于字符串里面可能包含任意字符(比如"10ds"),或者要转换的数字字符串太大,所以 Atoi 函数可能会发生错误:


3b810f2e4b2f46b2b39241181a6e35d3.png


如果 err 的值为 nil,那么就代表没发生错误。

**提示:**Go 是静态类型语言,一旦某个变量被声明,那么它的类型就无法再改变了。

布尔类型的转换


Print 家族的函数,会把 bool 类型的值打印成 true/false 的文本。

下面的 Sprintf 函数是将其他类型转换成字符串,赋值给 launchText 。

某些语言里,经常把 1 和 0 当作 true 和 false,但是在 Go 里面不行。


注意:如果你想使用 string(false), int(false);bool(1), bool(“yes”) 等类似的方式进行转换,那么 Go 编译器会报错。

【上一讲】go08 多语言文本

【下一讲】go10 函数

目录
相关文章
|
19天前
|
Go
Go的数据类型
Go的数据类型
15 0
|
19天前
|
存储 Go
Go基本数据类型
主要介绍GO语言的基本数据类型
25 2
|
19天前
|
Go
Go速成-常量
Go语言常量,定义的值是不能进修修改的,定义常量就是const,常量定义建议全部大写在定义常量的时候如果没有声明值,就会沿用上面的值,常量类型只可以定义bool,数值类型,字符串,常量没有必须使用的要求。
|
6天前
|
大数据 Go
Go 语言数据类型
Go 语言数据类型
13 1
|
6天前
|
编译器 Serverless Go
Go 语言常量
Go 语言常量
18 1
|
6天前
|
存储 编译器 Go
Go 语言变量
Go 语言变量
12 0
|
10月前
|
存储 Go 开发者
GO的几种不同类型
7种基本类型
59 0
|
12月前
|
大数据 编译器 程序员
GO 语言基本数据类型(下)
GO 语言基本数据类型(下)
|
12月前
|
存储 Go
GO 语言基本数据类型(上)
GO 语言基本数据类型(上)
|
Java 编译器 Go
Go 语言中没有枚举类型,但是我们可以这样做
在日常开发中,枚举类型是很常用的,虽然 Go 语言中没有内置枚举类型,但也不妨碍我们自己实现一个类似的 “枚举类型”。
111 0