Go言語で継承みたいなこと
最近Go言語でつくるインタプリタを読んでいる。ほとんど趣味だが、lexer/parser(字句解析/構文解析)->ast化(抽象構文木)->eval(評価)までの流れを辿れるためとてもおもしろい。
- 作者: Thorsten Ball,設樂洋爾
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/06/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Go言語で継承
これは、Scalaでtrait作ってwith句で使えるようにしたり、RubyでModuleをincludeしてやるのに似ている。
簡単な例
package main import ( "fmt" ) // 共通処理を入れたクラス、みたいなもの type CommonUtil struct {} // 名前を入れたらあいさつする関数 func (*CommonUtil) SayHello(name string) { fmt.Printf("SayHello! %s", name) } // 実際のモジュール type ActualModule struct { *CommonUtil // ここでEmbeddingする Name string } func main() { fmt.Println("Hello, Wandbox!") am := ActualModule{&CommonUtil{}, "hiroyuki"} // SayHelloを呼び出せる am.SayHello(am.Name) }