0
点赞
收藏
分享

微信扫一扫

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

ivy吖 2022-11-10 阅读 93


你好哇,欢迎来答题,一起来看下​​昨天题目​​的解析:

1.下面这段代码输出什么?

1func main() {
2 count := 0
3 for i := range [256]struct{}{} {
4 m, n := byte(i), int8(i)
5 if n == -n {
6 count++
7 }
8 if m == -m {
9 count++
10 }
11 }
12 fmt.Println(count)
13}

1func main() {
2 count := 0
3 for i := range [256]struct{}{} {
4 m, n := byte(i), int8(i)
5 if n == -n {
6 count++
7 }
8 if m == -m {
9 count++
10 }
11 }
12 fmt.Println(count)
13}

参考答案及解析:4。知识点:数值溢出。当 i 的值为 0、128 是会发生相等情况,注意 byte 是 uint8 的别名。

引自《Go语言101》

2.下面代码输出什么?

1const (
2 azero = iota
3 aone = iota
4)
5
6const (
7 info = "msg"
8 bzero = iota
9 bone = iota
10)
11
12func main() {
13 fmt.Println(azero, aone)
14 fmt.Println(bzero, bone)
15}

1const (
2 azero = iota
3 aone = iota
4)
5
6const (
7 info = "msg"
8 bzero = iota
9 bone = iota
10)
11
12func main() {
13 fmt.Println(azero, aone)
14 fmt.Println(bzero, bone)
15}

参考答案及解析:0 1 1 2。知识点:iota 的使用。这道题易错点在 bzero、bone 的值,在一个常量声明代码块中,如果 iota 没出现在第一行,则常量的初始值就是非 0 值。

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

看下今天的题目:

1.同级文件的包名不允许有多个,是否正确?

  • A. true
  • B. false

2.下面的代码有什么问题,请说明。

1type data struct {
2 name string
3}
4
5func (p *data) print() {
6 fmt.Println("name:", p.name)
7}
8
9type printer interface {
10 print()
11}
12
13func main() {
14 d1 := data{"one"}
15 d1.print()
16
17 var in printer = data{"two"}
18 in.print()
19}

1type data struct {
2 name string
3}
4
5func (p *data) print() {
6 fmt.Println("name:", p.name)
7}
8
9type printer interface {
10 print()
11}
12
13func main() {
14 d1 := data{"one"}
15 d1.print()
16
17 var in printer = data{"two"}
18 in.print()
19}

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

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



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

Go 面试每天一篇(第 83 天)_包名

Go 面试每天一篇(第 83 天)_包名_02

举报

相关推荐

0 条评论