浅谈Go与习题(十二)

116 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情

今天来学习下Go常见的习题问题(十二),也是面试中可能会遇到的,让我们来一起学习吧~

强制类型转换

下列选项中,关于类型转换正确的是?

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)

答案:C选项是正确的,这里涉及到Go的强制类型转换,go语言不支持类型自动转换,也就是隐式转换,只支持强制类型转换,也就是显示转换,顾名思义就是将不同类型变量强制变为一样,使用的语法如下:表达式T(v),T表示强制转换的类型,v表示需要转换的变量,最后把转换后的值赋值给左边接收变量,这里type定义的类型,需要用相同的类型进行转换,eg: int32(x) int8(x) float64(x)

switch语句

下列选项中,关于switch语句说法正确的是?

  • A. 条件表达式必须为常量或者整数
  • B. 单个case中,可以出现多个结果选项
  • C. 需要用break来明确退出一个case
  • D. 只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case

答案:选择B和D,这里涉及到switch的用法,使用fallthrough会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true,switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break

bool 赋值

下列选项中,关于bool变量赋值错误的是?

  • A. b = true
  • B. b = 1
  • C. b = bool(1)
  • D. b = (1 == 2)

答案:选择B和C,因为int类型不能转换为bool类型

总结

今天浅谈了Go的习题(十二),主要介绍了GO面试中会出现的问题,接下来会继续分享其他的习题的相关知识,对于一个刚入门的我来说,还有许多地方需要学习,有错误的地方欢迎大家指出,共同进步!!