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

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

下面这段代码输出什么?

type People struct{}

func (p *People) ShowA() {
	fmt.Println("showA")
	p.ShowB()
}
func (p *People) ShowB() {
	fmt.Println("showB")
}

type Teacher struct {
	People
}

func (t *Teacher) ShowB() {
	fmt.Println("teacher showB")
}

func main() {
	t := Teacher{}
	t.ShowA()
}
4048 阅读
39 回复
neil_liu
neil_liu · #1 · 3年之前

m

Kilin
Kilin · #2 · 3年之前

euibieur894
euibieur894 · #3 · 3年之前

啊这 image.png

Srim_ycb
Srim_ycb · #4 · 3年之前

最近出现好几次重复了!咋回事?

henry1
henry1 · #5 · 3年之前

学到了

kjx678
kjx678 · #6 · 3年之前
Srim_ycbSrim_ycb #4 回复

最近出现好几次重复了!咋回事?

别问,问就是复习

zonghsh001
zonghsh001 · #7 · 3年之前

这里我想问一下,在 Java 中, Teacher 的 showB() 方法覆盖了 People 的 showB(),这样,在使用模板方法模式的时候,当子类覆盖父类的某一方法时,会正确调用到 Teacher 的 showB()。在 go 中,这里还是调用的 People 的 showB() 方法。要如何写才能实现此种情况?

cxmgit
cxmgit · #8 · 3年之前

有没有一种可能,这是一道新题

GO_go_GO1
GO_go_GO1 · #9 · 3年之前
cxmgitcxmgit #8 回复

有没有一种可能,这是一道新题

说哪个公司雇的弹幕水君

Natsuwau
Natsuwau · #10 · 3年之前

mark

cxmgit
cxmgit · #11 · 3年之前
GO_go_GO1GO_go_GO1 #9 回复

#8楼 @cxmgit 说哪个公司雇的弹幕水君

谷歌

GO_go_GO1
GO_go_GO1 · #12 · 3年之前
cxmgitcxmgit #11 回复

#9楼 @GO_go_GO1 谷歌

不是Amazon?

brothersam
brothersam · #13 · 3年之前

showA (\n) showB (golang码农求职)

feiyang
feiyang · #14 · 3年之前

mark

henry1
henry1 · #15 · 3年之前

打卡

cc1234
cc1234 · #16 · 3年之前

showA showB

a406299736
a406299736 · #17 · 3年之前

mark。。。。。。。。

wonderzerg
wonderzerg · #18 · 3年之前

Teacher 没有自己 ShowA(),所以调用内部类型 People 的同名方法

neil_liu
neil_liu · #19 · 3年之前

前几天有个调用showB的题目

zhangdi
zhangdi · #20 · 3年之前
AntonyZhang
AntonyZhang · #21 · 3年之前

打卡

18328048335
18328048335 · #22 · 3年之前
zhangdizhangdi #20 回复

之前的一题,调用showB的 https://studygolang.com/interview/question/fpliubgeg00

怎么看往期的题啊?

jatshw
jatshw · #23 · 3年之前

打卡

hades2013
hades2013 · #24 · 2年之前

打卡学习

feiyang
feiyang · #25 · 2年之前

知识点:结构体嵌套。这道题可以结合第 12 天的第三题一起看,Teacher 没有自己 ShowA(),所以调用内部类型 People 的同名方法,需要注意的是第 5 行代码调用的是 People 自己的 ShowB 方法。

SeaSnai1
SeaSnai1 · #26 · 2年之前

打卡

wzbwzt
wzbwzt · #27 · 2年之前

1

NovaChaos
NovaChaos · #28 · 2年之前

mk

OrdinaryYZH
OrdinaryYZH · #29 · 2年之前

mark

feiyang
feiyang · #30 · 2年之前
xutao
xutao · #31 · 2年之前

mark

hasbug
hasbug · #32 · 2年之前

mark

Zuos
Zuos · #33 · 2年之前

mark

YuPeng
YuPeng · #34 · 大约1年之前

mark

hasbug
hasbug · #35 · 大约1年之前

mark

cllgeek
cllgeek · #36 · 大约1年之前

mark

zhangwei_go
zhangwei_go · #37 · 大约1年之前

showA showB

BigBigGopher
BigBigGopher · #38 · 大约1年之前

mark

WangWangZhou
WangWangZhou · #39 · 7月之前

mark

package main

import "fmt"

type People struct{}

func (p *People) ShowA() {
    fmt.Println("People showA")
    p.ShowB()
}
func (p *People) ShowB() {
    fmt.Println("People showB")
}

type Teacher struct {
    People
}

func (t *Teacher) ShowB() {
    fmt.Println("teacher showB")
}

func main() {
    t := Teacher{}
    t.ShowA()
    fmt.Println("---")
    t.ShowB()
}

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