【Go】structにデフォルトの値を設定したい
Golangでstructを生成するときにこのフィールドは特定の値で初期化してほしい、みたいな場合があります。
例えば検索に使うパラメーターオブジェクトのような。
package main import "fmt" // sturct type UrlParam struct { Keyword string Format string } func main() { param := UrlParam{} param.Keyword = "golang" param.Format = "json" fmt.Println(param) }
Keywordは都度設定したいですが、formatに関してはデフォルトがjsonになっていてほしい。 変えたければxmlとか指定したい。
intなどは0で初期化されますが、stringの場合は空文字列です。
こういう場合は普通にコンストラクタっぽいものを作れば良い。
func NewParam (keyword string) * UrlParam { u := new(UrlParam) u.Format = "json" u.Keyword = keyword return u }
構造体のフィールドの数が少なければこういう方が簡潔
func NewParam2 (keyword string) *UrlParam { return &UrlParam{keyword, "json"} }
ポインタじゃないのが欲しければこう
func makeParam(keyword string) UrlParam { return UrlParam{keyword, "json"} }
当たり前のことは当たり前に書けば良さそう。