文章插图
第1题
package mainimport ("fmt")func hello() []string {return nil}func main() {h := helloif h == nil {fmt.Println("nil")} else {fmt.Println("not nil")}}
选项nilnot nilcompilation error
答案not nil
在主函数中,把 hello 函数赋值给了变量 h 。在条件判断中,h != nil,所以会打印,not nil 。第2题
package mainimport ("fmt""strconv")func main() {i := 2s := "1000"if len(s) > 1 {i, _ := strconv.Atoi(s)i = i + 5}fmt.Println(i)}
选项21005compilation error
答案2
主要问题点集中在第 12 行, i, _ := strconv.Atoi(s) 创建了一个新变量i ,作用域限制在 if 语句内 。但是在第 15 行打印的时候,变量 i 则是全局变量的值 。第3题
package mainimport ("fmt")func hello(num ...int) {num[0] = 18}func main() {i := []int{5, 6, 7}hello(i...)fmt.Println(i[0])}
选项185Compilation error
答案18
这一题考查的是可变参数,如果把 slice 传递给可变参数,其作用会施加到调用者 。第 4 题
package mainimport ("fmt")func main() {a := [2]int{5, 6}b := [2]int{5, 6}if a == b {fmt.Println("equal")} else {fmt.Println("not equal")}}
选项compilation errorequalnot equal
答案equal
数组是Go中的值类型,可以进行比较 。如果对应的元素相等,则两个数组值相等 。在我们的例子中,a和b是相等的,因此这个程序打印为相等 。第 5 题
package mainimport "fmt"type rect struct {len, wid int}func (r rect) area() {fmt.Println(r.len * r.wid)}func main() {r := &rect{len: 5, wid: 6}r.area()}
选项compilation error30
答案30
这个程序将正确编译并打印30 。第 14 行,我们把 rect 的地址分配给了 r 。你可能想知道,当我们在第 15 行没有使用(*r).area()时,为什么这个程序还能工作 。由于area()有一个值接收器,所以Go足够智能,可以将 r.area() 解释为 (*r).area(),因此这个程序可以工作: 。
第 6 题
package mainimport ("fmt")func main() {a := [5]int{1, 2, 3, 4, 5}t := a[3:4:4]fmt.Println(t[0])}
选项34compilation error
答案4
表达式a[low : high : max]
构造与简单的片表达式 a[low: high] 相同类型、相同长度和元素的片 。另外,它通过将结果片设置为 max - low 来控制它的容量 。因此,第 9 行中的切片 t 有一个元素4,容量是1 。
第 7 题
package mainimport ("fmt")type person struct {name string}func main() {var m map[person]intp := person{"mike"}fmt.Println(m[p])}
选项compilation error01
答案0
当我们尝试打印在映射中不存在的元素时,将打印该元素的零值 。在我们的例子中,m是 map[person]int 类型的映射 。因为p在映射中不存在,int 的初始值 0 被打印出来 。第 8 题
package mainimport ("fmt")func main() {i := 65fmt.Println(string(i))}
选项A65compilation error
答案A
字母 A 的 unicode值是 65 。所以第 9 行,i 被强制格式化为string类型是,就打印出字母 A 了 。第 9 题
package mainimport ("fmt")func main() {a := 5b := 8.1fmt.Println(a + b)}
选项13.113compilation error
答案compilation error
这个错误很简单,也很明显 。两个变量数据类型不相同,直接运算,编译不通过 。第 10 题
package mainimport ("fmt")func main() {var i interface{}if i == nil {fmt.Println("nil")return}fmt.Println("not nil")}
选项nilnot nilcompilation error
答案nil
空接口的基础值和具体类型都为nil 。因此 i 为 nil 。第 11 题
package mainimport ("fmt")func hello(i int) {fmt.Println(i)}func main() {i := 5defer hello(i)i = i + 10}
选项515
答案5
延迟函数的参数是在执行 defer 语句时求值,而不是在实际函数调用完成时求值 。因此,当遇到第 12 行中的 defer 语句时, i的值是5 。这个程序会输出5 。
第 12 题
package mainimport ("fmt")func main() {fmt.Printf("%%")}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 手把手教你用1行代码实现人脸识别
- 教你给U盘加密、快来给自己的U盘加个密码吧
- Excel中的选择性粘贴,你会用吗?
- 谁偷偷删了你的微信?用Python分分钟揪出来
- 一招把你的 Python 代码提速7倍
- 天天写order by,你知道Mysql底层执行原理吗?
- 二 茵芋酒方的功效与作用
- 百合花茶的正确泡法,四大步骤教你如何简易而快速的冲泡百合花茶
- 在线教育|陪伴孩子听说读写!科大讯飞AI学习机A10视频体验:奇妙的AI学习小助手
- 如何将你的代码可视化?