Go面试题46

Posted by     "" on Monday, January 13, 2020

Go面试题46

1: 下面的代码有什么问题?

func main() {
    const x = 123
    const y = 1.23
    fmt.Println(x)
}

2: 下面代码输出什么?

const (
    x uint16 = 120
    y
    s = "abc"
    z
)

func main() {
    fmt.Printf("%T %v\n", y, y)
    fmt.Printf("%T %v\n", z, z)
}

3: 下面代码有什么问题?

func main(
    var x string = nil
    if x == nil {
        x = "default"
    }
)

参考答案及解析

1: 答案及解析: 编译可以通过. 知识点: 常量. 常理是一个简单值的标识符, 在程序运行时,不会被修改的量. 不像变量, 常量未使用是能编译通过的.

2: 答案及解析:

uint16 120
string abc

知识点: 常量. 常量组中如不指定类型和初始化值, 则与上一行非空常量右值相同.

3: 答案及解析: 将nil 分配给string 类型的变量. 这是个大多数新手会犯的错误. 修复代码:

func mian() {
    var x string //defaults to "" (zero value)

    if x == "" {
        x = "default"
    }
}

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

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