0
点赞
收藏
分享

微信扫一扫

Go 面试每天一篇(第 45 天)

西红柿上校 2022-11-10 阅读 210

你好哇,欢迎来答题,一起来看下

1.下面代码有什么问题?

1func main() {
2 m := make(map[string]int,2)
3 cap(m)
4}

参考答案及解析:问题:使用 cap() 获取 map 的容量。1.使用 make 创建 map 变量时可以指定第二个参数,不过会被忽略。2.cap() 函数适用于数组、数组指针、slice 和 channel,不适用于 map,可以使用 len() 返回 map 的元素个数。

引自:http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html

2.下面的代码有什么问题?

1func main() {  
2 var x = nil
3 _ = x
4}

参考答案及解析:nil 用于表示 interface、函数、maps、slices 和 channels 的“零值”。如果不指定变量的类型,编译器猜不出变量的具体类型,导致编译错误。

修复代码:

1func main() {
2 var x interface{} = nil
3 _ = x
4}

3.下面代码能编译通过吗?

1type info struct {
2 result int
3}
4
5func work() (int,error) {
6 return 13,nil
7}
8
9func main() {
10 var data info
11
12 data.result, err := work()
13 fmt.Printf("info: %+v\n",data)
14}

参考答案及解析:编译失败。

1non-name data.result on left side of :=

不能使用短变量声明设置结构体字段值,修复代码:

1func main() {
2 var data info
3
4 var err error
5 data.result, err = work() //ok
6 if err != nil {
7 fmt.Println(err)
8 return
9 }
10
11 fmt.Println(data)
12}

引自:http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html

解析若有不妥之处,欢迎在留言区交流、指正!

看下今天的题目:

1func main() {
2 one := 0
3 one := 1
4}

2.下面代码有什么问题?

1func main() {
2 x := []int{
3 1,
4 2
5 }
6 _ = x
7}

3.下面代码输出什么?



答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!



所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!

如果我的文章对你有所帮助,点赞、转发都是一种支持!



Go 面试每天一篇(第 45 天)_golang


Go 面试每天一篇(第 45 天)_字段_02


举报

相关推荐

0 条评论