// LoggerミドルウェアをJSON形式で
e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
Format: `{"time":"${time_rfc3339}","method":"${method}","uri":"${uri}","status":${status},"latency_ms":${latency_ms},"remote_ip":"${remote_ip}","error":"${error}"}` + "\n",
}))
// LoggerミドルウェアをLTSV形式で
e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
Format: "time:${time_rfc3339}\tmethod:${method}\turi:${uri}\tstatus:${status}\tlatency_ms:${latency_ms}\tremote_ip:${remote_ip}\terror:${error}\n",
}))
// Recoverミドルウェア(panicをキャッチしてログ出力)
e.Use(middleware.RecoverWithConfig(middleware.RecoverConfig{
LogLevel: log.ERROR,
}))
Go のソースコードに「このファイルをどの条件でビルド対象に含めるか」を指定する仕組みです。
複数の環境(OS、アーキテクチャ、機能の有無など)で異なるソースを切り替えるのに使います。
//go:build staging
//go:build staging
とすると、staging が 有効な場合のみこのファイルが読み込まれます。
brew install go
go env GOROOT
go env GOPATH
go の環境変数全てを確認する
go env
go install golang.org/x/tools/gopls@latest
goplsがインストールされた場所を確認
ls -la $(go env GOPATH)/bin/gopls
echo $(go env GOPATH)/bin
echo $PATH | grep -o "$(go env GOPATH)/bin"
code .bash_profile
.bash_profile
# goplus
export PATH=$PATH:$(go env GOPATH)/bin
gopls version
golang.org/x/tools/gopls v0.20.0
New というプレフィックスを持つ関数名は、特定の型や構造体の新しいインスタンスを生成するためのコンストラクタ関数として使われます。
func NewXxx(parameters) *Xxx {
return &Xxx{...} // Xxx構造体のポインタを返す
}
例
type person struct {
height float32
weight float32
}
func NewPerson(height, weight float32) *person{
return &person{height: height, weight: weight}
}
func main() {
p := NewPerson(182.0, 75.5)
fmt.Println(p) // &{182 75.5}
}
引用: https://qiita.com/gold-kou/items/4494f8b69b8fa53d5e93
CreateXxx が使われる場合
CreateXxx は、オブジェクトやリソースを生成・初期化するプロセスがより複雑な場合や、外部システムとの関わりがある場合に使用される傾向があります。例えば、以下のようなケースです:
外部リソースの作成が関与する場合
ファイル、ネットワーク接続、データベースエントリなど。
外部リソースの作成に失敗する可能性があり、エラーを返す必要がある。
生成プロセスが単純ではない場合
内部で複数のステップが必要だったり、リソースの確保や設定が絡む場合。
明確に「作成」という意味を強調したい場合
「新しいインスタンスを返す」以上の動作を表現したいとき。