Go 面试每天一篇(第 120 天)
程序员文章站
2022-04-11 16:51:52
...
点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
时间过得真快,眨眼就到 2020 年,明天就是元旦,虽然只有一天假,还是可以好好休息,祝大家元旦快乐!按照惯例,放假期间不会推文!四哥也趁这个空挡好好休息调整下,整个 12 月份基本上是 10-12-6,有点扛不住呀!
一起来看下昨天题目的解析:
1.关于slice或map操作,下面正确的是。
A.
1var s []int
2s = append(s,1)
B.
1var m map[string]int
2m["one"] = 1
C.
1var s []int
2s = make([]int, 0)
3s = append(s,1)
D.
1var m map[string]int
2m = make(map[string]int)
3m["one"] = 1
参考答案及解析:ACD。
2.下面代码输出什么?请简要说明。
1var ErrDidNotWork = errors.New("did not work")
2
3func DoTheThing(reallyDoIt bool) (err error) {
4 if reallyDoIt {
5 result, err := tryTheThing()
6 if err != nil || result != "it worked" {
7 err = ErrDidNotWork
8 }
9 }
10 return err
11}
12
13func tryTheThing() (string, error) {
14 return "", ErrDidNotWork
15}
16
17func main() {
18 fmt.Println(DoTheThing(true))
19 fmt.Println(DoTheThing(false))
20}
参考答案即解析:都输出 nil。知识点:变量的作用域。因为 if 语句块内的 err 变量会遮罩函数作用域内的 err 变量。
修复代码:
1func DoTheThing(reallyDoIt bool) (err error) {
2 var result string
3 if reallyDoIt {
4 result, err = tryTheThing()
5 if err != nil || result != "it worked" {
6 err = ErrDidNotWork
7 }
8 }
9 return err
10}
解析若有不妥之处,欢迎在留言区交流、指正!
一起来看下今天的题目:
1.下面代码输出什么?
1func main() {
2 fmt.Println(len("你好bj!"))
3}
2.是否可以编译通过?如果通过,输出什么?
1func GetValue(m map[int]string, id int) (string, bool) {
2 if _, exist := m[id]; exist {
3 return "存在数据", true
4 }
5 return nil, false
6}
7
8func main() {
9
10 intmap := map[int]string{
11 1: "a",
12 2: "bb",
13 3: "ccc",
14 }
15
16 v, err := GetValue(intmap, 3)
17 fmt.Println(v, err)
18}
引自《Go夜读》
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读:
如果我的文章对你有所帮助,点赞、转发都是一种支持!
给个[在看],是对四哥最大的支持
上一篇: Python函数的初识