go — GoLang: создайте функцию, которая принимает интерфейс (я пришел из PHP)

В PHP я могу создать интерфейс

interface Hello {
public function bar();
}

И некоторые классы, которые реализуют это

final class Foo implements Hello {
public function bar() {
// do something
}
}

final class Bar implements Hello {
public function bar() {
// do something
}
}

Затем я также могу создать метод NewClass :: bar (), который принимает интерфейс.

final class NewClass {
public function bar(Hello $hello) {
// do something
}
}

Как я могу сделать то же самое на Голанге?

type humanPlayer struct {
name string
}

type botPlayer struct {
name string
}

Как я могу реализовать тот же шаблон в Голанге?

-2

Решение

package main

import (
"fmt")

type Namer interface {
Name() string
}

type humanPlayer struct {
name string
}

func (h *humanPlayer) Name() string {
return h.name
}

type botPlayer struct {
name string
}

func (b *botPlayer) Name() string {
return b.name
}

func sayName(n Namer) {
fmt.Printf("Hello %s\n", n.Name())
}

func main() {
human := &humanPlayer{
name: "bob",
}
bot := &botPlayer{
name: "tom",
}
sayName(human)
sayName(bot)
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]