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

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

同一結(jié)構(gòu)的多個(gè)接口

同一結(jié)構(gòu)的多個(gè)接口

Go
狐的傳說 2023-07-17 16:31:52
我正在學(xué)習(xí) Go,并想知道在某些情況下,在 Golang 中根據(jù)消費(fèi)者代碼將如何處理該結(jié)構(gòu)來創(chuàng)建多個(gè)interface變體是否被認(rèn)為是好的/好的/典型的(鼓勵(lì)?)實(shí)踐?struct我對此表示懷疑,因?yàn)槲矣幸粋€(gè)結(jié)構(gòu)對象,可以說它在我的代碼庫中做了太多事情,并且我想添加一些測試并僅模擬該結(jié)構(gòu)的某些用法/使用者。說我有,對于(人為的)示例,環(huán)境結(jié)構(gòu)// Environment/env.gopackage envtype Environment struct {  sunny bool,  fullMoon bool,  temp float64  // ...}func (e *Environment) IsSunny() bool {  return e.sunny}func (e *Environment) IsFullMoon() bool {  return e.fullMoon}func (e *Environment) GetTemp() float64 {  return e.temp}上面的結(jié)構(gòu)體具有與一些環(huán)境條件(白天和夜間)相關(guān)的屬性和方法。然后這個(gè)結(jié)構(gòu)有多個(gè)消費(fèi)者,但每個(gè)消費(fèi)者interface只關(guān)心可用方法的子集:// daytime.gotype DayEnv interface {  IsSunny() bool  GetTemp() float64}func getDaytime(de DayEnv) {  sunStatus := getSunStatus(de)  temp      := getDayTemp(de)  fmt.Printf("Today is %s and temperature is %s", sunStatus, temp)}// func getSunStatus(de DayEnv) string {}// func getDayTemp(de DayEnv) string {}// nightTime.gotype NightEnv interface {  IsFullMoon() bool  GetTemp() float64}func getNighttime(ne NightEnv) {  moonPhase := getMoonPhase(ne)  temp      := getNightTemp(ne)  fmt.Printf("Tonight the moon is %s and temperature is %s", moonPhase, temp)}// func getMoonPhase(ne NightEnv) string { }// func getNightTemp(ne NightEnv) string { }在我看來,雖然創(chuàng)建一個(gè)只關(guān)心結(jié)構(gòu)方法子集的新接口使事情變得更加靈活,但擁有如此多(部分)接口重復(fù)并根據(jù)需要或在任何地方散布它們也感覺相當(dāng)懶惰或錯(cuò)誤他們被消耗了。我意識到這個(gè)例子有點(diǎn)做作,但是在更大的范圍內(nèi)(就像很多很多消費(fèi)者),或者也許一個(gè)文件具有x相同結(jié)構(gòu)的接口......這種方法有什么問題嗎?
查看完整描述

2 回答

?
牛魔王的故事

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

這種方法沒有什么問題,Go 標(biāo)準(zhǔn)庫也經(jīng)常使用它。例如,有許多結(jié)構(gòu)體實(shí)現(xiàn)了 io.Reader、io.Writer、io.Closer 和 io.Seeker 的組合。這些結(jié)構(gòu)的用戶指定他們需要什么類型的接口并使用它。



查看完整回答
反對 回復(fù) 2023-07-17
?
胡子哥哥

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

接口是golang實(shí)現(xiàn)“多態(tài)”的必備部分。你不但做對了,還找到了界面的本質(zhì)。



查看完整回答
反對 回復(fù) 2023-07-17
  • 2 回答
  • 0 關(guān)注
  • 132 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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