第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 中的多態(tài)性

Golang 中的多態(tài)性

Go
浮云間 2021-12-07 14:51:41
這是我想要的簡單示例:我有 B 的對象并使用結(jié)構(gòu) A 中的函數(shù) step1(通用功能)。我需要為在 A 內(nèi)部運(yùn)行的 B 重新定義函數(shù) step2。package mainimport "fmt"type A struct {}func (a *A) step1() {    a.step2();}func (a *A) step2 () {   fmt.Println("get A");}type B struct {   A}func (b *B) step2 () {   fmt.Println("get B");}func main() {    obj := B{}    obj.step1() }我該怎么做?// maybe func step1(a *A) {   self.step2(a);}
查看完整描述

1 回答

?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個贊

Go 不做多態(tài)性。您必須根據(jù)接口和采用這些接口的函數(shù)(而不是方法)重新定義您想要做的事情。


所以想想每個對象需要滿足什么接口,然后你需要在那個接口上工作什么功能。go 標(biāo)準(zhǔn)庫中有很多很棒的例子,例如io.Reader,io.Writer以及對這些起作用的函數(shù),例如io.Copy。


這是我嘗試將您的示例改寫為這種風(fēng)格的嘗試。它沒有多大意義,但希望它會給你一些工作。


package main


import "fmt"


type A struct {

}


type steps interface {

    step1()

    step2()

}


func (a *A) step1() {

    fmt.Println("step1 A")

}


func (a *A) step2() {

    fmt.Println("get A")

}


type B struct {

    A

}


func (b *B) step2() {

    fmt.Println("get B")

}


func step1(f steps) {

    f.step1()

    f.step2()

}


func main() {

    obj := B{}

    step1(&obj)

}


查看完整回答
反對 回復(fù) 2021-12-07
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號