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

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

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

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

1.下面代码输出什么?

1func test() []func() { 2    var funs []func() 3    for i := 0; i < 2; i++ { 4        funs = append(funs, func() { 5            println(&i, i) 6        }) 7    } 8    return funs 9}1011func main() {12    funs := test()13    for _, f := range funs {14        f()15    }16}

参考答案及解析:

10xc000018058 220xc000018058 2

知识点:闭包延迟求值。for 循环局部变量 i,匿名函数每一次使用的都是同一个变量。(说明:i 的地址,输出可能与上面的不一样)。

如果想要匿名函数每一次输出不同,应该怎么修改代码?

2.下面的代码能编译通过吗?可以的话输出什么,请说明?

1var f = func(i int) { 2    print("x") 3} 4 5func main() { 6    f := func(i int) { 7        print(i) 8        if i > 0 { 9            f(i - 1)10        }11    }12    f(10)13}

参考答案及解析:10x。这道题一眼看上去会输出 109876543210,其实这是错误的答案,这里不是递归。假设 main() 函数里为 f2(),外面的为 f1(),当声明 f2() 时,调用的是已经完成声明的 f1()。

看下面这段代码你应该会更容易理解一点:

1var x = 2323func main() {4    x := 2*x - 45    println(x)    // 输出:426}

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

看下今天的题目:

1.下面代码有什么问题,请说明?

1func main() { 2    runtime.GOMAXPROCS(1) 3 4    go func() { 5        for i:=0;i<10 ;i++  { 6            fmt.Println(i) 7        } 8    }() 910    for {}11}

引自《Go语言高级编程》

2.假设 x 已声明,y 未声明,下面 4 行代码哪些是正确的。错误的请说明原因?

1x, _ := f()  // 12x, _ = f()  // 23x, y := f()  // 34x, y = f()  // 4

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

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

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

推荐阅读:

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

你可能感兴趣的文章
ObjectAlreadyExistsException:Unable to store Job : '*', because one already exists with thi s ident
查看>>
mybatis & JPA 实体类型属性转换
查看>>
Git 中的 ~ 和 ^
查看>>
第一篇博客,给大家分享java、架构师、大数据、人工智能的学习路线,希望能够帮助到大家
查看>>
18级大数据专家,跟大家漫谈大数据平台架构,你能学到多少?上篇
查看>>
18级大数据专家,漫谈大数据平台安全风险与建设,值得学(下篇)
查看>>
阿里P8终于整理出:Nginx+jvm+MySQL+Docker+Spring实战技术文档
查看>>
腾讯T4专家精心整理:大数据+机器学习+数据挖掘+算法大集结
查看>>
阿里P8终于总结出:SpringBoot+Tomcat+Nginx+Netty面试题及答案
查看>>
阿里P7大牛,深入剖析JVM底层设计原理+高级特性pdf,附46页ppt
查看>>
史上最全141道大数据面试题:Redis+Linux+kafka+Hadoop,附答案
查看>>
一文带你深入理解JVM,看完之后你还敢说你懂JVM吗?颠覆you认知
查看>>
这些大厂面试真题你能答出来,年薪至少30-50W,想不想挑战一下?
查看>>
携程T7用637页PDF,解读十余热门技术领域,八场携程技术沙龙干货
查看>>
开发框架SpringBoot:构建SpringBoot工程+配置文件详解+Actuator
查看>>
6年拉力工作经验,学了阿里P8级架构师的7+1+1落地项目,跳槽阿里年薪直接40W+
查看>>
90天吃透阿里P8推荐的625页Java编程兵书技术实战,直接入职阿里定级P6
查看>>
清华毕业扫地僧,用157集终于把java给讲完了,总计3.13GB
查看>>
清华毕业大佬用了一个项目就把SpringMVC+Spring+MyBatis给讲完了
查看>>
终于学完阿里P8架构师多年实战经验总结分享微服务之道实战文档
查看>>