やる気がストロングZERO

やる気のストロングスタイル

GoでもRubyのirbみたいにREPLを使いたい

Rubyirbとか、rails_consoleが便利なので、Goでもそういうの出来ないか探したら作ってくれてた。

motemen.hatenablog.com

インストールして、使いたいメソッドがあるパッケージをimportして使えば普通に使えた。

「実行したい処理のコードはあるけど、外部から実行するためのインターフェースがない」みたいなときに使えそう。

以下の感じで実行できた。

$ gore # 起動(このシェルの環境変数は内部からも参照できる)

gore > :import github.com/mixmaru/my_contracts/domains/contracts/application_service@v0.0.2 # 必要なメソッドが定義されてるパッケージをインポート

gore > app := application_service.NewUserApplicationService() # 構造体インスタンス化
# 返り値を表示してくれる
&application_service.UserApplicationService{                                                                                                
  userRepository: &repositories.UserRepository{                                                                                             
    BaseRepository: &repositories.BaseRepository{},                                                                                         
  },                                                                                                                                        
}

gore > app.RegisterUserIndividual("コンソールたろう") # メソッドの実行
# 返り値を表示してくれる
data_transfer_objects.UserIndividualDto{                                                                                                    
  Name:    "コンソールたろう",                                                                                                              
  Type:    "individual",
  BaseDto: data_transfer_objects.BaseDto{
    Id:        2,
    CreatedAt: 2020-09-27 13:15:26 Etc/UTC,
    UpdatedAt: 2020-09-27 13:15:26 Etc/UTC,
  },
}

※補足

importは「v1.0.11」のようなタグがあればその最新を、なければmaster(もしくはデフォルトブランチ?)の最新をとってくるっぽい。