定義: これは集約データ型であり、任意の型の 0 個以上の値から集約されたエンティティです。
メンバー: 各値は構造体のメンバーと呼ばれます。
例:
典型的な構造例を使用して、会社の従業員情報を処理します。各従業員情報には、一意の従業員番号、従業員の名前、自宅住所、生年月日、役職、給与が含まれます。 、優れたリーダーシップなど。これらすべての情報はエンティティにバインドする必要があり、ユニット全体としてコピーしたり、パラメータや関数の戻り値として使用したり、配列に格納したりすることができます。
#構造の定義:
type Employee struct { ID int Name string Address string DoB time.Time Position string Salary int ManagerID int }
変数の定義:
var dilbert Employee
メンバーへのアクセス:
dilbert.Salary -= 5000
メンバーアドレスの取得:
position := &dilbert.Position *position = "Senior " + *position
var employeeOfTheMonth *Employee = &dilbert employeeOfTheMonth.Position += " (proactive team player)"
メンバー定義の順序:
通常、1 行は 1 つの構造体メンバーに対応し、メンバーの名前が最初に、型が最後に来ます。ただし、隣接するメンバーの型が同じ場合は、名前と型と同様に、1 行にマージできます。以下のメンバーにアドレス指定します
type Employee struct { ID int Name, Address string DoB time.Time Position string Salary int ManagerID int }
メンバー命名規則:
構造体のメンバー名が大文字で始まる場合、メンバーはエクスポートされます。これは Go 言語によって決定されます。輸出ルール。構造体には、エクスポートされたメンバーとエクスポートされていないメンバーの両方が含まれる場合があります。 エクスポートの意味: 他のパッケージで読み書きできます。 S という名前の構造体型には、S 型のメンバーは含まれなくなります。これは、集計値にそれ自体を含めることができないためです。 (この制限は配列にも適用されます。) ただし、S 型の構造体には *S ポインター型のメンバーを含めることができるため、リンク リストやツリー構造などの再帰的なデータ構造を作成できます。type tree struct { value int left, right *tree }
type Point struct{ X, Y int } p := Point{1, 2}
anim := gif.GIF{LoopCount: nframes}
type Point struct { X, Y int } type Circle struct { Center Point Radius int } type Wheel struct { Circle Circle Spokes int }
var w Wheel w.Circle.Center.X = 8 w.Circle.Center.Y = 8 w.Circle.Radius = 5 w.Spokes = 20
type Circle struct { Point Radius int } type Wheel struct { Circle Spokes int }
var w Wheel w.X = 8 // equivalent to w.Circle.Point.X = 8 w.Y = 8 // equivalent to w.Circle.Point.Y = 8 w.Radius = 5 // equivalent to w.Circle.Radius = 5 w.Spokes = 20
w = Wheel{Circle{Point{8, 8}, 5}, 20} w = Wheel{ Circle: Circle{ Point: Point{X: 8, Y: 8}, Radius: 5, }, Spokes: 20, // NOTE: trailing comma necessary here (and at Radius) }
type Movie struct { Title string Year int `json:"released"` Color bool `json:"color,omitempty"` Actors []string } var movies = []Movie{ {Title: "Casablanca", Year: 1942, Color: false, Actors: []string{"Humphrey Bogart", "Ingrid Bergman"}}, {Title: "Cool Hand Luke", Year: 1967, Color: true, Actors: []string{"Paul Newman"}}, {Title: "Bullitt", Year: 1968, Color: true, Actors: []string{"Steve McQueen", "Jacqueline Bisset"}}, // ... }
data, err := json.Marshal(movies) if err != nil { log.Fatalf("JSON marshaling failed: %s", err) } fmt.Printf("%s\n", data)
[{"Title":"Casablanca","released":1942,"Actors":["Humphrey Bogart","Ingr id Bergman"]},{"Title":"Cool Hand Luke","released":1967,"color":true,"Ac tors":["Paul Newman"]},{"Title":"Bullitt","released":1968,"color":true," Actors":["Steve McQueen","Jacqueline Bisset"]}]
Year int `json:"released"` Color bool `json:"color,omitempty"`
go 言語チュートリアル 列に注目してください。
以上がGo言語の構造を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。