Goでpythonの継承のようなものを行い,異なる構造体をリストみたいなものに格納したい.
go
1type PlayersStruct struct { 2 players []Player 3} 4 5var Players = PlayersStruct{} 6 7func create_players() { 8 human := Human{Player{"MY", 500}} 9 computer1 := Computer{Player{"C1", 500}} 10 computer2 := Computer{Player{"C2", 500}} 11 computer3 := Computer{Player{"C3", 500}} 12 Players.players = append(Players.players, &human) 13 Players.players = append(Players.players, &computer1) 14 Players.players = append(Players.players, &computer2) 15 Players.players = append(Players.players, &computer3) 16}
異なる構造体なのでエラーが出てしまった。
go
1type Base interface { 2 bet() 3 info() 4} 5 6type Players interface { 7 Base 8}
interfaceを用いて書いてみたがinterfaceのせいで humanとcomputer両方にbet() info()
がなかったら動かなかった。humanにはbet() info() computerにはinfo()だけ行うようにしたいがうまく書くことができませんでした。
どのようにすれば以下のコードをGoに書き換えれるでしょうか?
python
1players = [] 2class Player: 3 def __init__(self, name, coin): 4 self.name = name 5 self.coin = coin 6 def info(self): 7 def set_bet_coin(self,bet_coin): 8 9class Human(Player): 10 def __init__(self, name, coin): 11 super().__init__(name, coin) 12 def bet(self): 13 14class Computer(Player): 15 def __init__(self, name, coin): 16 super().__init__(name, coin) 17 18create_players(): 19 global players 20 h= H('MY', 500) 21 c1 = C('C1', 500) 22 c2 = C('C2', 500) 23 c3 = C('C3', 500) 24 players = [h,c1,c2,c3] 25
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/25 10:22