类型转换

题目:

关于类型转化,下面选项正确的是?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
A.
type MyInt int
var i int = 1
var j MyInt = i

B.
type MyInt int
var i int = 1
var j MyInt = (MyInt)i

C.
type MyInt int
var i int = 1
var j MyInt = MyInt(i)

D.
type MyInt int
var i int = 1
var j MyInt = i.(MyInt)

答案解析:

​ 在 Go 中进行类型转换时,如果基础类型相同,可以使用显式类型转换。选项 C 中的代码是正确的:

1
2
var i int = 1
var j MyInt = MyInt(i)

这里将 int 类型的变量 i 转换为自定义类型 MyInt,因为它们的底层类型相同,所以是允许的。

选项 A 中的代码是错误的,因为直接将 int 类型赋值给 MyInt 类型是不允许的。

选项 B 中的代码是错误的,因为在 Go 中,显式类型转换的语法不需要括号。

选项 D 中的代码是错误的,因为使用点号语法 i.(MyInt) 是类型断言的语法,是将接口类型断言成某一类型,而不是类型转换的语法。


类型转换
http://example.com/2023/08/16/Go每日一题/类型转换/
作者
Feng Tao
发布于
2023年8月16日
更新于
2023年8月16日
许可协议