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 は、オブジェクトやリソースを生成・初期化するプロセスがより複雑な場合や、外部システムとの関わりがある場合に使用される傾向があります。例えば、以下のようなケースです:
外部リソースの作成が関与する場合
ファイル、ネットワーク接続、データベースエントリなど。
外部リソースの作成に失敗する可能性があり、エラーを返す必要がある。
生成プロセスが単純ではない場合
内部で複数のステップが必要だったり、リソースの確保や設定が絡む場合。
明確に「作成」という意味を強調したい場合
「新しいインスタンスを返す」以上の動作を表現したいとき。