package
0.0.0-20240429050328-3be44a187b12
Repository: https://github.com/robertwang/golang_study.git
Documentation: pkg.go.dev
# README
Go每日一题
今日(2022-12-01)的题目如下
通常,JS 面试,闭包应该是必考的题目。随着越来越多的语言对函数式范式的支持,闭包问题经常出现。在 Go 语言中也是如此。
这是 Go 语言爱好者周刊第 90 期的一道题目。以下代码输出什么?
package main
import "fmt"
func app() func(string) string {
t := "Hi"
c := func(b string) string {
t = t + " " + b
return t
}
return c
}
func main() {
a := app()
fmt.Printf("a: %p\n", &a)
b := app()
fmt.Printf("b: %p\n", &b)
a("go")
fmt.Println(b("All"))
fmt.Println(a("All"))
}
A:Hi All;B:Hi go All;C:Hi;D:go All
这道题目答对的人蛮多的:60%。不管你是答对还是答错,如果最后再加一行代码:fmt.Println(a("All")),它输出什么?想看看你是不是蒙对了。(提示:你可以输出 t 的地址,看看是什么情况。)
自测结果:
- a: 0xc000012028
- b: 0xc000012038
- Hi All
- Hi go All