你好哇,欢迎来答题,一起来看下昨天题目的解析:
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}答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
 
如果我的文章对你有所帮助,点赞、转发都是一种支持!












