首页 > 其他分享 >Go 面试每天一篇(第 28 天)

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

时间:2022-11-10 12:35:50浏览次数:50  
标签:Println int fmt 28 面试 func Go foo Math

你好哇,再坚持一周就到国庆长假啦!

一起来看下

1.下面这段代码输出什么?

type Direction int

const (
North Direction = iota
East
South
West
)

func (d Direction) String() string {
return [...]string{"North", "East", "South", "West"}[d]
}

func main() {
fmt.Println(South)
}

参考答案及解析:South。知识点:iota 的用法、类型的 String() 方法。

根据 iota 的用法推断出 South 的值是 3;另外,如果类型定义了 String() 方法,当使用 ​​fmt.Printf()​​​、​​fmt.Print()​​​ 和 ​​fmt.Println()​​ 会自动使用 String() 方法,实现字符串的打印。

2.下面代码输出什么?

type Math struct {
x, y int
}

var m = map[string]Math{
"foo": Math{2, 3},
}

func main() {
m["foo"].x = 4
fmt.Println(m["foo"].x)
}
  • A. 4
  • B. compilation error

参考答案及解析:B,编译报错 ​​cannot assign to struct field m["foo"].x in map​​​。错误原因:对于类似 ​​X = Y​​​的赋值操作,必须知道 ​​X​​​ 的地址,才能够将 ​​Y​​​ 的值赋给 ​​X​​,但 go 中的 map 的 value 本身是不可寻址的。

有两个解决办法:

1.使用临时变量

type Math struct {
x, y int
}

var m = map[string]Math{
"foo": Math{2, 3},
}

func main() {
tmp := m["foo"]
tmp.x = 4
m["foo"] = tmp
fmt.Println(m["foo"].x)
}

2.修改数据结构

type Math struct {
x, y int
}

var m = map[string]*Math{
"foo": &Math{2, 3},
}

func main() {
m["foo"].x = 4
fmt.Println(m["foo"].x)
fmt.Printf("%#v", m["foo"]) // %#v 格式化输出详细信息
}

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

看下今天的题目:

func main() {
fmt.Println([...]int{1} == [2]int{1})
fmt.Println([]int{1} == []int{1})
}

2.一道很有代表性的题目,很多老司机都因此翻车!

下面这段代码输出什么?如果编译错误的话,为什么?



  • A. 5 5
  • B. runtime error


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



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




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



Go 面试每天一篇(第 28 天)_赋值


Go 面试每天一篇(第 28 天)_编译错误_02


标签:Println,int,fmt,28,面试,func,Go,foo,Math
From: https://blog.51cto.com/u_15289640/5840477

相关文章

  • Go 面试每天一篇(第 13 天)
    昨天有同学反馈,看答案时可能需要翻看前一天的文章了解原选项或原题,来回切换不方便,想到一个解决办法,利用微信的悬浮窗功能实现文章快速切换。点击文章有上角的...,底部会出......
  • Go 面试每天一篇(第 11 天)
    我们的 《每天一篇》系列昨天被Go语言中文网的《Go语言爱好者周刊》第6期 收录了,现在还有点小激动呢!现在来答题的小伙伴越来越多,一种好现象,加油!还没开始的同学赶快......
  • Go 面试每天一篇(第 15 天)
    我们应该坚信美好的事物一定会发生,毫不怀疑地坚信,加油!继续我们的每天一篇,看下​​昨天题目​​的解析:1.参考代码及解析:C。知识点:常量,Go语言中的字符串是只读的。2.参考......
  • Go 面试每天一篇(第 10 天)
    九月第一天,加油!看下昨天的题目解析:1.参考答案及解析:ABC。A、B都是声明channel;C读取channel;写channel是必须带上值,所以D错误。2.参考答案及解析:A。打印一个map中不......
  • Go 面试每天一篇(第 16 天)
    周末了,答题不能停,先看下​​昨天题目​​的解析:1.参考答案及解析:A。知识点:nil切片和空切片。nil切片和nil相等,一般用来表示一个不存在的切片;空切片和nil不相等,表示......
  • Go 面试每天一篇(第 12 天)
    继续我们的每日答题,看下​​昨天的题目​​解析:1.参考答案及解析:ABD。知识点:cap(),cap()函数不适用map。2.参考答案及解析:A。当且仅当接口的动态值和动态类型都为nil时......
  • Go 面试每天一篇(第 17 天)
    昨天的题目相对比较简单,但需要注意的知识点挺多的,先看下​​昨天题目​​的解析:1.参考答案及解析:a、b、c的长度和容量分别是03、23、12。知识点:数组或切片的截取操作......
  • Go 面试每天一篇(第 20 天)
    ​​昨天的文章​​详细讲解了defer与返回值的问题,还没看的同学建议看下,说实话,到现在我还会时不时把文章翻出来看看,以免自己掉坑!看下​​昨天题目​​的解析:参考答案及解......
  • Go 面试每天一篇(第 21 天)
    你好哇,今天是节前最后一天,提前祝大家中秋愉快,假期玩的开心!还有一件事告诉大家,《每天一篇》在放假期间会停更三天!平日里我们必须努力上班、学习成长,放了假就好好休息放松、......
  • Go 面试每天一篇(第 22 天)
    三天假期一晃而过,愉快而又短暂!学习、工作更有劲儿了,加油!有些同学真勤奋,放假期间都还在答题,向你们学习!一起来看下1.参考答案及解析:A声明的是nil切片;B声明的是长度和容量......