新しい型の定義
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/10 00:54 UTC 版)
「Go (プログラミング言語)」の記事における「新しい型の定義」の解説
Goではtype構文を利用して既存の型から新しい型を定義できる。 次の例では、int型を元に MathInt という新しい型を定義している。 type MathInt int これはC/C++におけるtypedefやC#におけるusingエイリアスディレクティブと違い、単に既存の型に別名を与えているのではなく、元のint型と別の型を定義している点が大きく異なる。 新しく定義した型であれば、元の型が構造体型でなくともメソッドを追加することができる。例えばint型やマップ型といった事前定義済み型 (組み込み型) に対してもメソッドを追加することが可能である。 事前定義済み型から新しい型を定義した場合、例えば下記のような記述が可能となる。 package mainimport ( "fmt" "math")type MathInt intfunc (x MathInt) Abs() float64 { return math.Abs(float64(x))}func main() {var x MathInt = -10fmt.Printf("%d\n", x) // -> -10fmt.Printf("%f\n", x.Abs()) // -> 10.000000fmt.Printf("%T\n", x) // -> main.MathInt} Go 1.9ではtypeキーワードを利用した型エイリアス (type alias) 構文が別途追加された。こちらはC/C++のtypedefやC#のusingエイリアスディレクティブと類似の機能である。 package mainimport ( "fmt" "math")type MyInt = intfunc main() { var x MyInt = -10fmt.Printf("%d\n", x) // -> -10 fmt.Printf("%f\n", math.Abs(float64(x))) // -> 10.000000fmt.Printf("%T\n", x) // -> int}
※この「新しい型の定義」の解説は、「Go (プログラミング言語)」の解説の一部です。
「新しい型の定義」を含む「Go (プログラミング言語)」の記事については、「Go (プログラミング言語)」の概要を参照ください。
- 新しい型の定義のページへのリンク