Skip to content

Goのnew関数が値と型の両方を取らない理由

Go 1.26で追加された new 関数は、最初の頃は new(type, val) だったけれど最終的には値だけを取るようになった。この決定が行われた理由は、型を受け取る場合に冗長な記述になりがちであったり、キャストするのと可読性にそれほど違いがないから、ということらしい。

型パラメータを使って

func Pointer[T any](v T) *T {
return &v
}

とする実装でも代用は可能だけど、あまりに個数が多いから標準で対応する理由になっているとのこと。