Go每日一题(67) 的题目如下

3949 次点击 · 3 赞 ·大约8小时之前 开始浏览   · 来源「Golang来啦」

下面代码输出什么?

type A interface {
	ShowA() int
}

type B interface {
	ShowB() int
}

type Work struct {
	i int
}

func (w Work) ShowA() int {
	return w.i + 10
}

func (w Work) ShowB() int {
	return w.i + 20
}

func main() {
	c := Work{3}
	var a A = c
	var b B = c
	fmt.Println(a.ShowB())
	fmt.Println(b.ShowA())
}
  • A. 23 13
  • B. compilation error
3949 阅读
42 回复
euibieur894
euibieur894 · #1 · 3年之前

打卡

Esac_Ben
Esac_Ben · #2 · 3年之前

Mark.

henry1
henry1 · #3 · 3年之前

打卡

RoddeHope
RoddeHope · #4 · 3年之前

mark

minQie
minQie · #5 · 3年之前

di~

luyu123
luyu123 · #6 · 3年之前

mark

Epiphany
Epiphany · #7 · 3年之前

mark

Natsuwau
Natsuwau · #8 · 3年之前

mark

lihao1988
lihao1988 · #9 · 3年之前

mark

brothersam
brothersam · #10 · 3年之前

编译不通过吧?(golang码农求职)

feiyang
feiyang · #11 · 3年之前

mark

henry1
henry1 · #12 · 3年之前

打卡

neil_liu
neil_liu · #13 · 3年之前

打卡

zhangdi
zhangdi · #14 · 3年之前

就是说,A接口没有ShowB方法,B接口也没有ShowA方法

jatshw
jatshw · #15 · 3年之前

打卡

mingtop
mingtop · #16 · 3年之前

fmt.Println(a.ShowA()) ==> 13 fmt.Println(b.ShowB()) ==> 23

a406299736
a406299736 · #17 · 3年之前

打卡。。。。

NovaChaos
NovaChaos · #18 · 2年之前

mk

huangyf168
huangyf168 · #19 · 2年之前

mk

Dessert
Dessert · #20 · 2年之前

关键:接口的静态类型和动态类型(piar内包含type与data),a、b 具有相同的动态类型和动态值,分别是结构体 work 和 {3};a 的静态类型是 A,b 的静态类型是 B,接口 A 不包括方法 ShowB(),接口 B 也不包括方法 ShowA(),编译报错。

young13
young13 · #21 · 2年之前

done

Yt3134
Yt3134 · #22 · 2年之前

没看清楚调用的方法

wzbwzt
wzbwzt · #23 · 2年之前

1

hades2013
hades2013 · #24 · 2年之前

打卡学习

1121cczj
1121cczj · #25 · 2年之前

打卡学习!

YuPeng
YuPeng · #26 · 2年之前

打卡

huangyf168
huangyf168 · #27 · 2年之前

打卡

hasbug
hasbug · #28 · 2年之前

mark

Zuos
Zuos · #29 · 2年之前

mark

feiyang
feiyang · #30 · 2年之前

还需要注意接收者的类型 cannot use c (variable of type Work) as type A in variable declaration: Work does not implement A (ShowA method has pointer receiver)

u2s2
u2s2 · #31 · 2年之前

打卡

cherGou
cherGou · #32 · 2年之前

yayaleslie
yayaleslie · #33 · 2年之前

mark

528548004
528548004 · #34 · 2年之前

mark

YuPeng
YuPeng · #35 · 2年之前

mark

hasbug
hasbug · #36 · 2年之前

mark

cherGou
cherGou · #37 · 2年之前

liangsen
liangsen · #38 · 2年之前

打卡

1174en
1174en · #39 · 2年之前

m

feiyang
feiyang · #40 · 2年之前

打卡 还需要注意接收者的类型 cannot use c (variable of type Work) as type A in variable declaration: Work does not implement A (ShowA method has pointer receiver)

lijinmin
lijinmin · #41 · 2年之前

打卡

BigBigGopher
BigBigGopher · #42 · 11月之前

a,b具有相同的动态类型和动态值,分别是结构体work和{3},a的静态类型是A,b的静态类型是B,接口A不包括showB方法,同样,接口B也不包括showA方法

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传