下面给出上一篇文章的答案:
1.BD
知识点:字符串连接。除了以上两种连接方式,还有 strings.Join()、buffer.WriteString()等。
Go中,双引号是用来表示字符串string,其实质是一个byte类型的数组,单引号表示rune类型。还有一个反引号,用来创建原生的字符串字面量,它可以由多行组成,但不支持任何转义序列。因此,当把两个不同类型的变量进行拼接时,就会报错
2.贴下原题代码:
const (
x = iota
_
y
z = "zz"
k
p = iota
)
func main() {
fmt.Println(x,y,z,k,p)
}
参考答案及解析:编译通过,输出:0 2 zz zz 5。
知识点:iota 的使用。给大家贴篇文章,讲的很详细
https://www.cnblogs.com/zsy/p/5370052.html
3.下面赋值正确的是()
-
A. var x = nil
-
B. var x interface{} = nil
-
C. var x string = nil
-
D. var x error = nil
参考答案及解析:BD。知识点:nil 值。nil 只能赋值给指针、chan、func、interface、map 或 slice 类型的变量。强调下 D 选项的 error 类型,它是一种内置接口类型,看下方贴出的源码就知道,所以 D 是对的。
type error interface {
Error() string
}
欢迎在留言区补充!
看下今天的题目:
1.关于init函数,下面说法正确的是()
-
A. 一个包中,可以包含多个 init 函数;
-
B. 程序编译时,先执行依赖包的 init 函数,再执行 main 包内的 init 函数;
-
C. main 包中,不能有 init 函数;
-
D. init 函数可以被其他函数调用;
2.下面这段代码输出什么以及原因?
func hello() []string {
return nil
}
func main() {
h := hello
if h == nil {
fmt.Println("nil")
} else {
fmt.Println("not nil")
}
}
-
A. nil
-
B. not nil
-
C. compilation error
3.下面这段代码能否编译通过?如果可以,输出什么?
func GetValue() int {
return 1
}
func main() {
i := GetValue()
switch i.(type) {
case int:
println("int")
case string:
println("string")
case interface{}:
println("interface")
default:
println("unknown")
}
}
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!