你好哇,欢迎来答题,一起来看下昨天题目的解析:
1.下面的代码有什么问题?
1func main() {
2 const x = 123
3 const y = 1.23
4 fmt.Println(x)
5}
参考答案及解析:编译可以通过。知识点:常量。常量是一个简单值的标识符,在程序运行时,不会被修改的量。不像变量,常量未使用是能编译通过的。
2.下面代码输出什么?
1const (
2 x uint16 = 120
3 y
4 s = "abc"
5 z
6)
7
8func main() {
9 fmt.Printf("%T %v\n", y, y)
10 fmt.Printf("%T %v\n", z, z)
11}
参考答案及解析:知识点:常量。
输出:
1uint16 120
2string abc
常量组中如不指定类型和初始化值,则与上一行非空常量右值相同
3.下面代码有什么问题?
1func main() {
2 var x string = nil
3
4 if x == nil {
5 x = "default"
6 }
7}
参考答案及解析:将 nil 分配给 string 类型的变量。这是个大多数新手会犯的错误。修复代码:
1func main() {
2 var x string //defaults to "" (zero value)
3
4 if x == "" {
5 x = "default"
6 }
7}
引自:http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
1.下面的代码有什么问题?
1func main() {
2 data := []int{1,2,3}
3 i := 0
4 ++i
5 fmt.Println(data[i++])
6}
2.下面代码最后一行输出什么?请说明原因。
1func main() {
2 x := 1
3 fmt.Println(x)
4 {
5 fmt.Println(x)
6 i,x := 2,2
7 fmt.Println(i,x)
8 }
9 fmt.Println(x) // print ?
10}
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读:
如果我的文章对你有所帮助,点赞、转发都是一种支持!