第三十八天
2021.07

第三十八天

1.关于异常的触发,下面说法正确的是?

A. 空指针解析;

B. 下标越界;

C. 除数为0;

D. 调用panic函数;

参考答案及解析:ABCD。

2.下面代码输出什么?

func main() {
    x := []string{"a", "b", "c"}
    for v := range x {
        fmt.Print(v)
    }
}

参考答案及解析:012。注意区别下面代码段:

func main() {
    x := []string{"a", "b", "c"}
    for _, v := range x {
        fmt.Print(v)     //输出 abc
    }
}

3.下面这段代码能否编译通过?如果通过,输出什么?

type User struct{}
 type User1 User
 type User2 = User

 func (i User1) m1() {
     fmt.Println("m1")
 }
 func (i User) m2() {
     fmt.Println("m2")
}

func main() {
    var i1 User1
    var i2 User2
    i1.m1()
    i2.m2()
}

参考答案及解析:能,输出m1 m2,第 2 行代码基于类型 User 创建了新类型 User1,第 3 行代码是创建了 User 的类型别名 User2,注意使用 = 定义类型别名。因为 User2 是别名,完全等价于 User,所以 User2 具有 User 所有的方法。但是 i1.m2() 是不能执行的,因为 User1 没有定义该方法。