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

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

避免使用來自不同結(jié)構(gòu)類型的相同值的重復函數(shù)

避免使用來自不同結(jié)構(gòu)類型的相同值的重復函數(shù)

Go
猛跑小豬 2022-08-15 10:04:01
我有一個方法,應該得到不同的類型,建議如何解決這個問題,而不是重復的函數(shù),基本上做同樣的事情...(我想避免創(chuàng)建包裝結(jié)構(gòu)....)type A1 struct {    Spec              A1Spec    `json:"spec,omitempty"`    Status            A1Status `json:"status,omitempty"`    metav1.TypeMeta   `json:",inline"`    metav1.ObjectMeta `json:"metadata,omitempty"`}type B1 struct {    Spec               B1Spec   `json:"spec,omitempty"`    Status            B1Status `json:"status,omitempty"`    metav1.TypeMeta   `json:",inline"`    metav1.ObjectMeta `json:"metadata,omitempty"`}func ExecuteA1(ctx context.Context, a1 A1, Client client.Client) error {if a1.Spec.Type == "test" {….}}func ExecuteB1(ctx context.Context, b1 B1, Client client.Client) error {if  b1.Spec.Type == "test" {….}….}兩個函數(shù)都做著一樣,但類型不同,我想避免創(chuàng)建兩個函數(shù),它建議如何解決這個問題?https://play.golang.org/p/kV7s3LRd-eh
查看完整描述

1 回答

?
慕容708150

TA貢獻1831條經(jīng)驗 獲得超4個贊

通過使用接口。兩者兼而有之,并實現(xiàn)一個接口,該接口具有獲取(返回)類型的方法。那么你只需要一個需要這個接口類型值的函數(shù),就可以調(diào)用接口定義的方法。然后,您可以傳遞 值 或 ,或者實現(xiàn)該接口的任何其他類型。A1B1Execute()A1B1


例如:


type HasType interface {

    GetType() string

}


func (a A1) GetType() string {

    return a.Spec.Type

 }


func (b B1) GetType() string {

    return b.Spec.Type

}


func Execute(ctx context.Context, foo HasType, Client client.Client) error {

    if foo.GetType() == "test" {

    }

}

你可以這樣稱呼它:


var a A1 = ...

var b B1 = ...


Execute(ctx, a, client)

Execute(ctx, b, client)

請參閱為什么 Golang 中需要接口?


另請注意,在此特定示例中,您可以只傳遞類型而不是 and ,因此可以省略接口和方法聲明。A1B1


例如,你可以這樣創(chuàng)建:Execute()


func Execute(ctx context.Context, typ string, Client client.Client) error {

    if typ == "test" {

    }

}

并這樣稱呼它:


var a A1 = ...

var b B1 = ...


Execute(ctx, a.Spec.Type, client)

Execute(ctx, b.Spec.Type, client)



查看完整回答
反對 回復 2022-08-15
  • 1 回答
  • 0 關注
  • 93 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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