Closed3

GoのInterfaceについて

dak2dak2

Goのinterfaceが初見だと分からなかったので整理する

dak2dak2

↓Javaのようなimplementsキーワードで明示する必要がない

Java

public interface Animal {
    void eat();
}

public class Human implements Animal {
    @Override
    public void eat() {
        System.out.println("I eat bread.");
    }
}

Go

package main

import "fmt"

type Human struct {
    Name string
}

type Animal interface {
    Eat()
}

func (h Human) Eat() {
    fmt.Println(h.Name, "is eating")
}

func move(a Animal) {
     a.Eat()
}

func main() {
     human := Human{"John"}
     move(human)
}
dak2dak2
  • Goだとimplementsキーワードなどで明示的に定義する必要がない
  • interfaceに定義したメソッドやメンバを持つ構造体が自動的にinterfaceとして実装される
このスクラップは2023/06/17にクローズされました