goreadword(ch)言語機能の特徴.文法.構造体.Goにはユーザー定義の複合型を記述することのできる構造体の機能があり、下記のように記述する。//新しい構造体型の定義。各フィールドの識別子とその型名を指定。namestring//名前。ageint//年齢。//メソッドの定義。//以下のように書くこともできる。person.PrintAge()//以下のように書式指定すると、型名とリテラル表現を出力できる。型とメソッドが切り離されており、型は一切メソッドに依存しない。メソッドと型は、メソッドの追加対象となる型名をレシーバーの型名に指定することで関連付けるようになっている。メソッドは型から切り離されているため型本体を変更する事なくメソッドを追加することが可能であり、同一パッケージ内限定ではあるが、開放された型を実現している。新しい型の定義.Goではtype構文を利用して既存の型から新しい型を定義できる。事前定義済み型から新しい型を定義した場合、例えば下記のような記述が可能となる。import(import(匿名フィールド.Goには継承が意図的に実装されていない。しかし匿名フィールドという機能を用いることで、ある構造体と同じフィールド、メソッドを持つ構造体を容易に作成することができる。//呼び出し例このようにして作られた構造体から匿名フィールドで用いられた元となる構造体の型に暗黙的にキャストするような機能は存在していない。End()Iteratorファイルのオープンとクローズなど、組になる作業で両方行われる必要があるものに多く使われる。例外処理.ダウンキャスト.はインターフェース型の値から、基底型の値(インターフェース型に変換される前の型の値)を動的に安全に得るダウンキャストの仕組みとして「型アサーション」と呼ばれる機能を備えている。//Valueの返値はどんな型でも構わないcaseint:default:名前とモジュールの管理.には名前とモジュールを管理するために、パッケージという仕組みを持っている。基本的なパッケージの使用例を下記に示す。//本記事の例では省略されている事が多いが本来は必須である