Go面试题61

Posted by     "" on Monday, February 24, 2020

Go面试题61

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

func main() {
    var k = 1
    var s = []int{1,2}
    k, s[k] = 0, 3
    fmt.Println(s[0] + s[1])
}

2: 下面代码输出什么?

func main() {
    var k = 9
    for k = range []int{}{}
    fmt.Println(k)

    for k =0; k < 3; k++ {
    }
    fmt.Println(k)

    for k = range (*[3]int)(nil) {
    }
    fmt.Println(k)
}

参考答案及解析

1: 答案及解析: 4. 知识点: 多重赋值.

多重赋值分为两个步骤, 有先后顺序: 1. 计算等号左边的索引表达式和取值表达式, 接着计算等号右边的表达式; 2. 赋值;
所以本例,会先计算s[k],等号右边是两个表达式是常量, 所以赋值等同于k, s[1] = 0, 3

2: 答案及解析: 932

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

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