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

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

如何修改未知類型的結(jié)構(gòu)中的字段?

如何修改未知類型的結(jié)構(gòu)中的字段?

Go
神不在的星期二 2023-04-04 17:25:26
我有多個(gè)具有一個(gè)公共字段的結(jié)構(gòu);讓我們common在這里稱呼它type Struct1 struct {    foo string    bar string    common string}type Struct2 struct {    baz int    qux string    common string}我想創(chuàng)建一個(gè)將 anInterface作為輸入并使 無效的函數(shù)common。編譯時(shí)不知道可用的結(jié)構(gòu)類型,因此我無法為每種類型創(chuàng)建單獨(dú)的函數(shù),也無法使用 switch 語句。PS:在我的用例中,我想取消,common因?yàn)樗4媪嗣總€(gè)結(jié)構(gòu)的創(chuàng)建時(shí)間,我想跟蹤結(jié)構(gòu)的歷史,所以我會知道它是否發(fā)生變化。將創(chuàng)建時(shí)間放在結(jié)構(gòu)中會搞砸,因?yàn)槊看紊尚陆Y(jié)構(gòu)時(shí)創(chuàng)建時(shí)間都會不同,即使其實(shí)際數(shù)據(jù)可能相同。
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

定義一個(gè)具有公共字段的結(jié)構(gòu),并使其實(shí)現(xiàn)一個(gè)接口,該接口表明它能夠使公共字段無效。然后將此結(jié)構(gòu)嵌入到應(yīng)該能夠使字段無效的其他結(jié)構(gòu)類型中。


// CommonNullifier is able to nullify its common field(s)

type CommonNullifier interface {

? ? ? ? NullifyCommon()

}


// StructCommon contains the common struct fields

type StructCommon struct {

? ? ? ? Common string

}


func (sc *StructCommon) NullifyCommon() {

? ? ? ? sc.Common = ""

}


// Struct1 embeds common fields, thus implements CommonNullifier

type Struct1 struct {

? ? ? ? StructCommon

? ? ? ? Foo string

}


// Struct2 also embeds common fields, thus also implements CommonNullifier

type Struct2 struct {

? ? ? ? StructCommon

? ? ? ? Bar string

}


// NullifyCommon nullfies the 'common' fields in the argument

func NullifyCommon(s CommonNullifier) {

? ? ? ? s.NullifyCommon()

}


您也可以使用反射,但使用接口通常更具可讀性。


查看完整回答
反對 回復(fù) 2023-04-04
  • 1 回答
  • 0 關(guān)注
  • 136 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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