ブックマーク / paulownia.hatenablog.com (1)

  • Golangのインターフェースは拡張していいものなのか? - NullPointer's

    早速Golangで頭を抱えている Goには「このインターフェースを実装するぞ!」という明示的な宣言がない。errorインターフェースがいい例だが、Error() stringというシグニチャのメソッドがある構造体は何でもerrorとして扱うことできるようになる。ダックタイピングのような挙動を示す そんなインターフェースの型によって分岐する単純なコードを考える type Animal interface { Bark() string } // animalを実装したCat type Cat struct {} func (cat *Cat) Bark() string { return "Nyan" } // animalを実装してないApple type Apple struct{} func whatIs(x any) { switch x.(type) { case Animal:

    Golangのインターフェースは拡張していいものなのか? - NullPointer's
    rugamaga
    rugamaga 2022/08/22
    var _ Animal = (*Cat)(nil) なんけど、これって結局インタフェイスの継承を明示的に宣言するのと同じだけの作業が発生するんだなあって......しかも忘れうる。
  • 1