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

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

具有相同匿名字段但類型不同的 Go 結(jié)構(gòu)數(shù)組

具有相同匿名字段但類型不同的 Go 結(jié)構(gòu)數(shù)組

Go
有只小跳蛙 2021-11-22 18:26:49
如果你想象我有以下聲明:type Car struct {    Vehicle    engineType string}type Bus struct {    Vehicle    public     bool    engineType string}type Bike struct {    Vehicle    motorbike bool}type Vehicle struct {    NumberWheels     int    NumberPassengers int    Owner            string}type Vehicles []Vehicle我正在嘗試擁有一系列車輛。然而,這是不可能的,因為他們每個人都有不同的類型(即Car,Bus,Bike,等...)var myCar = Car{Vehicle{4, 4, "Me"}, "Manual"}var myBike = Bike{Vehicle{2, 0, "Bob and I"}, false}var myVehicles = Vehicles{myCar, myBike}for i := range myVehicles {    fmt.Println(myVehicles[i])}你將如何實現(xiàn)這樣的事情。還是我試圖從錯誤的角度解決這個問題。我是 Go 的新手
查看完整描述

1 回答

?
侃侃爾雅

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

Vehicle被嵌入CarBus,所以你得到的東西在錯誤的方向前進(jìn)......這不像Vehicle是一個父類,所以你不能得到你正在尋找出這個設(shè)計的多態(tài)行為。你需要的是一個接口。

為了向您展示一個工作示例,我將使用空接口(它將允許您在集合中存儲任何類型)。對于您的實際程序,您可能想要制作類似IVehicle界面的東西,并在其上放置所有車輛將擁有的任何通用方法,可能是類似的東西Start()或其他任何東西......

https://play.golang.org/p/iPJbFYlo7o

稍微擴(kuò)展一下嵌入的東西......這不是繼承。你可以用它完成同樣的事情,但是“汽車是一種交通工具”這句話是不正確的。這實際上更像是“Car has a Vehicle”的組合。只是它Vehicle的字段和方法被“提升”了Car,這意味著它們可以從 的實例中訪問,Car而無需像Car.Vehicle.FieldOnVehicle. 那不是你真正要找的。如果你想說“Car is a Vehicle”并且它是真的,那么Vehicle需要是一個Car實現(xiàn)的接口。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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