English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ポインタを指すこともできますstructのポインタ。Golangのstruct(構造体)は、ユーザー定義のタイプであり、異なるタイプのプロジェクトをグループ化することができます/単一のタイプに組み合わせます。構造体へのポインタを使用するには、以下を使用します&演算子、すなわちアドレス演算子。Golangは、プログラマーが構造体のフィールドにアクセスする際に明示的にアンダースコアを使用することなく、ポインタを使用することが許可しています。
例1:ここでは、Employeeという名前の構造体を作成し、main関数で構造体のインスタンス、つまりempを作成します。その後、構造体のアドレスを構造体概念を表すポインタに渡すことができます。明示的にアンダースコアを使用する必要はありません。なぜなら、以下のプログラムと同じ結果が得られるからです(ABCが2回)。
package main import "fmt" //構造体の定義 type Employee struct { //フィールドを設定 name string empid int } func main() { //作成されたインスタンス //従業員構造体型 emp := Employee{"ABC", 19078} //ここでは、構造体へのポインタを指している pts := &emp fmt.Println(pts) //構造体のフィールドにアクセス(従業員の名前) //ポインタを使用して、明示的なアンダースコアを使用していない場合 fmt.Println(pts.name) //明示的にアンダースコアを使用して //上記の結果と同じ fmt.Println(*pts).name) }
出力:
&{ABC 19078} ABC ABC
例2:以下のように、構造体メンバーまたは構造体リテラルの値を変更する場合、ポインタを使用できます:
package main import "fmt" //構造体の定義 type Employee struct { name string empid int } func main() { //作成されたインスタンス //従業員構造体型 emp := Employee{"ABC", 19078} //ここでは、構造体へのポインタを指している pts := &emp //値を表示 fmt.Println(pts) //nameの値を更新 pts.name = "XYZ" fmt.Println(pts) }
出力:
&{ABC 19078} &{XYZ 19078}