Go面试题45

Posted by     "" on Wednesday, January 8, 2020

Go面试题45

1: 下面代码什么错误?

func main() {
    one := 0
    one := 1
}

2: 下面代码什么问题?

func main() {
    x := []int{
        1,
        2
    }

    _ = x
}

3: 下面代码输出什么?

func test(x byte) {
    fmt.Println(x)
}

func main() {
    var a byte = 0x11
    var b uint8 = a
    var c uint8 = a + b
    test(c)
}

参考答案及解析

1: 答案及解析: 变量重复声明.

不能在单独的声明中重复声明一个变量, 但在多个变量声明的时候是可以的,但必须保证至少一个变量时新声明的.
修复代码如下:

func main() {
    one := 0
    one, two := 1, 2
    one, two = two, one
}

2: 答案及解析: 编译错误, 第四行代码没有逗号. 用字面量初始化数组, slicemap时, 最好是在每个元素后面加上逗号, 即使是声明在一行或者多行都不会出错.

修复代码:

func main() {
    x := []int { // 多行
        1,
        2,
    }
    x = x

    y := []int{3,4,} // 一行no error
    y = y
}

3: 答案及解析: `34`. 与`rune``int32`的别名一样, `byte``uint8`的别名, 别名类型无需转换,可以直接转换.

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

使用微信扫描二维码完成支付