博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go 面试每天一篇(第 97 天)
阅读量:2288 次
发布时间:2019-05-09

本文共 1872 字,大约阅读时间需要 6 分钟。

点击上方蓝色“Golang来啦”关注我哟

加个“星标”,天天 15 分钟,一起学 Go

你好哇,欢迎来答题,一起来看下的解析:

1.下面的代码输出什么?

1type Point struct{ x, y int }  2  3func main() {
4    s := []Point{
5        {
1, 2}, 6        {
3, 4}, 7    } 8    for _, p := range s {
9        p.x, p.y = p.y, p.x 10    } 11    fmt.Println(s) 12}

参考答案及解析:输出 [{1 2} {3 4}]。知识点:for range 循环。range 循环的时候,获取到的元素值是副本,就比如这里的 p。修复代码示例:

1type Point struct{ x, y int }  2  3func main() {
4    s := []*Point{
5        &Point{
1, 2}, 6        &Point{
3, 4}, 7    } 8    for _, p := range s {
9        p.x, p.y = p.y, p.x 10    } 11    fmt.Println(*s[0]) 12    fmt.Println(*s[1]) 13}

2.下面的代码有什么隐患?

1func get() []byte {
2    raw := make([]byte, 10000) 3    fmt.Println(len(raw), cap(raw), &raw[0]) 4    return raw[:3] 5} 6 7func main() {
8    data := get() 9    fmt.Println(len(data), cap(data), &data[0]) 10}

参考答案及解析:get() 函数返回的切片与原切片公用底层数组,如果在调用函数里面(这里是 main() 函数)修改返回的切片,将会影响到原切片。为了避免掉入陷阱,可以如下修改:

1func get() []byte {
2    raw := make([]byte, 10000) 3    fmt.Println(len(raw), cap(raw), &raw[0]) 4    res := make([]byte, 3) 5    copy(res, raw[:3]) 6    return res 7} 8 9func main() {
10    data := get() 11    fmt.Println(len(data), cap(data), &data[0]) 12}

解析若有不妥之处,欢迎在留言区交流、指正!

看下今天的题目:

1.关于map,下面说法正确的是?

  • A. map 反序列化时 json.unmarshal() 的入参必须为 map 的地址;

  • B. 在函数调用中传递 map,则子函数中对 map 元素的增加不会导致父函数中 map 的修改;

  • C. 在函数调用中传递 map,则子函数中对 map 元素的修改不会导致父函数中 map 的修改;

  • D. 不能使用内置函数 delete() 删除 map 的元素;

2.下面代码输出什么?请简要说明。

1type Foo struct {
2    val int 3} 4 5func (f Foo) Inc(inc int) {
6    f.val += inc 7} 8 9func main() {
10    var f Foo 11    f.Inc(100) 12    fmt.Println(f.val) 13}

答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!

ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!

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

推荐阅读:

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

给个[在看],是对四哥最大的支持

转载地址:http://akfnb.baihongyu.com/

你可能感兴趣的文章
6年拉力工作经验,学了阿里P8级架构师的7+1+1落地项目,跳槽阿里年薪直接40W+
查看>>
90天吃透阿里P8推荐的625页Java编程兵书技术实战,直接入职阿里定级P6
查看>>
清华毕业扫地僧,用157集终于把java给讲完了,总计3.13GB
查看>>
清华毕业大佬用了一个项目就把SpringMVC+Spring+MyBatis给讲完了
查看>>
终于学完阿里P8架构师多年实战经验总结分享微服务之道实战文档
查看>>
年薪120W的架构师简历你见过吗?java程序员该如何达到?
查看>>
超赞!80W美团架构师7年心血终成轻量级框架SSM整合开发实战文档
查看>>
超赞!终于学完了阿里P8架构师7年心血整理总结的微服务实战文档
查看>>
真666!阿里资深架构师熬夜纯手写的238页微服务容器化开发实战笔记
查看>>
Mygod!阿里P8架构师20年经验总结成微服务设计企业架构转型之道笔记
查看>>
终于拿到阿里架构师分享的557页深入理解Java模块系统文档笔记,赶紧分享给大家
查看>>
蚂蚁上市延期!还想进阿里做技术专家?这套java面试题送给你
查看>>
终于学完了2021年阿里内部480道全套java面试题及答案
查看>>
面试官:熟悉Redis吗,项目中你是如何对Redis内存进行优化的
查看>>
JVM 实战学习总结:JVM 的分代模型:年轻代、老年代、永久代
查看>>
面试官:聊聊 Spring 中的线程安全性
查看>>
一篇文教你在 Java 中利用 redis 实现分布式全局唯一标识服务
查看>>
深入浅出数据库事务和4种隔离级别
查看>>
对限频限流的思考
查看>>
15天内4面阿里,成功拿下offer,分享个人面经
查看>>