Go 面试每天一篇(第 120 天)

点击上方蓝色“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 时间帮点下文末右下方的「在看」,感激!

所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!

推荐阅读:

Go 语言机制之栈与指针

800 字彻底理解 Go 指针

如果我的文章对你有所帮助,点赞、转发都是一种支持!

给个[在看],是对四哥最大的支持
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Seekload

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值