Go 面试每天一篇(第 80 天)
原创
©著作权归作者所有:来自51CTO博客作者Seekload的原创作品,请联系作者获取转载授权,否则将追究法律责任
你好哇,欢迎来答题,一起来看下昨天题目的解析:
1.interface{} 是可以指向任意对象的 Any 类型,是否正确?
参考答案及解析:B。
2.下面的代码有什么问题?
1type ConfigOne struct {
2 Daemon string
3}
4
5func (c *ConfigOne) String() string {
6 return fmt.Sprintf("print: %v", c)
7}
8
9func main() {
10 c := &ConfigOne{}
11 c.String()
12}
1type ConfigOne struct {
2 Daemon string
3}
4
5func (c *ConfigOne) String() string {
6 return fmt.Sprintf("print: %v", c)
7}
8
9func main() {
10 c := &ConfigOne{}
11 c.String()
12}
参考答案及解析:无限递归循环,栈溢出。知识点:类型的 String() 方法。如果类型定义了 String() 方法,使用 Printf()、Print() 、 Println() 、 Sprintf() 等格式化输出时会自动使用 String() 方法。
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
1.定义一个包内全局字符串变量,下面语法正确的是?
- A. var str string
- B. str := ""
- C. str = ""
- D. var str = ""
2.下面的代码有什么问题?
1func main() {
2
3 wg := sync.WaitGroup{}
4
5 for i := 0; i < 5; i++ {
6 go func(wg sync.WaitGroup, i int) {
7 wg.Add(1)
8 fmt.Printf("i:%d\n", i)
9 wg.Done()
10 }(wg, i)
11 }
12
13 wg.Wait()
14
15 fmt.Println("exit")
16}
1func main() {
2
3 wg := sync.WaitGroup{}
4
5 for i := 0; i < 5; i++ {
6 go func(wg sync.WaitGroup, i int) {
7 wg.Add(1)
8 fmt.Printf("i:%d\n", i)
9 wg.Done()
10 }(wg, i)
11 }
12
13 wg.Wait()
14
15 fmt.Println("exit")
16}
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的,感激!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
如果我的文章对你有所帮助,点赞、转发都是一种支持!

