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

Go 面试每天一篇(第 91 天),第1张

概述 你好哇,欢迎来答题,一起来看下昨天题目的解析:1.下面代码能通过编译吗?1type T int23func F(t T) {}45func main() {6    var q int7    F(q)8}2.下面代码能通过编译吗?请简要说明。1type T []int23func F(t T) {}45func main() {6    var q []in

 

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

1.下面代码能通过编译吗?

1type T int
2
3func F(t T) {}
4
5func main() {
6    var q int
7    F(q)
8}

2.下面代码能通过编译吗?请简要说明。

1type T []int
2
3func F(t T) {}
4
5func main() {
6    var q []int
7    F(q)
8}

我们将这两道题目放到一块做一个解析,第一题不能通过编译,第二题可以通过编译。我们知道不同类型的值是不能相互赋值的,即使底层类型一样,所以第一题编译不通过;对于底层类型相同的变量可以相互赋值还有一个重要的条件,即至少有一个不是有名类型(named type)。

这是 Go 语言规范手册的原文:

"x's type V and T have IDentical underlying types and at least one of V or T is not a named type. "

named Type 有两类:

内置类型,比如 int, int64, float, string, bool 等;

使用关键字 type 声明的类型;

Unnamed Type 是基于已有的 named Type 组合一起的类型,例如:struct{}、[]string、interface{}、map[string]bool 等。

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

看下今天的题目:

1.下面两段代码能否编译通过?请简要说明。

第一段:

1func f() {}
2func f() {}
3
4func main() {}

第二段:

1func init(){}
2func init(){}
3
4func main() {}

2.下面代码有什么问题?请指出。

1func (m map[string]string) Set(key string, value string) {
2    m[key] = value
3}
4
5func main() {
6    m := make(map[string]string)
7    m.Set("A", "One")
8}

 

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

 

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

 

 

 

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

总结

以上是内存溢出为你收集整理的Go 面试每天一篇(第 91 天)全部内容,希望文章能够帮你解决Go 面试每天一篇(第 91 天)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1211913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存