昨天的
投票总人数不多,但结果已经很明显了,以后发布题目解析时贴上原题!
回归主题,一起来看下
1.下面这段代码输出什么?为什么?
func (i int) PrintInt () {
fmt.Println(i)
}
func main() {
var i int = 1
i.PrintInt()
}
- A. 1
- B. compilation error
参考答案及解析:B。基于类型创建的方法必须定义在同一个包内,上面的代码基于 int 类型创建了 PrintInt() 方法,由于 int 类型和方法 PrintInt() 定义在不同的包内,所以编译出错。
解决的办法可以定义一种新的类型:
type Myint int
func (i Myint) PrintInt () {
fmt.Println(i)
}
func main() {
var i Myint = 1
i.PrintInt()
}
2.下面这段代码输出什么?为什么?
type People interface {
Speak(string) string
}
type Student struct{}
func (stu *Student) Speak(think string) (talk string) {
if think == "speak" {
talk = "speak"
} else {
talk = "hi"
}
return
}
func main() {
var peo People = Student{}
think := "speak"
fmt.Println(peo.Speak(think))
}
- A. speak
- B. compilation error
参考答案及解析:B。编译错误 Student does not implement People (Speak method has pointer receiver)
,值类型 Student
没有实现接口的 Speak()
方法,而是指针类型 *Student
实现该方法。
详细请参考
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
const (
a = iota
b = iota
)
const (
name = "name"
c = iota
d = iota
)
func main() {
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
2.下面这段代码输出什么?为什么?
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
标签:Println,PrintInt,26,Student,fmt,面试,func,Go,Speak From: https://blog.51cto.com/u_15289640/5840476