在 Go 中,自訂類型可使用 type 關鍵字定義(struct),包含命名欄位。它們可以透過欄位存取運算子訪問,並可附加方法來操作實例狀態。在實際應用中,自訂類型用於組織複雜資料和簡化操作。例如,學生管理系統使用自訂類型 Student 儲存學生信息,並提供計算平均成績和出勤率的方法。
#在Go 語言中,自訂類型是一種強大的功能,它允許你定義自己的複雜類型以滿足特定的需求。透過這種方式,你可以組織程式碼、提高可讀性並減少錯誤。
使用type
關鍵字可以定義一個新的自訂類型:
type Person struct { name string age int }
在這個範例中,我們定義了一個名為Person
的類型,它有兩個欄位:name
(一個字串)和age
(一個整數)。
一旦定義了自訂類型,你就可以建立該類型的變數並存取其欄位:
// 创建一个 Person 类型的新实例 person := Person{name: "John", age: 30} // 访问 person 实例的字段 fmt.Println(person.name) // "John" fmt.Println(person.age) // 30
自訂類型可以定義方法,這些方法是附加到該類型上的函數。方法可以存取和修改類型實例的狀態:
type Person struct { name string age int } func (p Person) Greet() { fmt.Println("Hello, my name is", p.name) } func main() { person := Person{name: "John", age: 30} person.Greet() // "Hello, my name is John" }
讓我們透過一個實戰案例來展示自訂類型如何用於解決實際問題。考慮一個學生管理系統,你需要追蹤學生的信息,如姓名、成績和出席情況。
type Student struct { name string grades []float64 attendance float64 } func (s Student) GetAverageGrade() float64 { total := 0.0 for _, grade := range s.grades { total += grade } return total / float64(len(s.grades)) } func main() { students := []Student{ {name: "John", grades: []float64{90, 85, 95}, attendance: 0.9}, {name: "Jane", grades: []float64{80, 90, 85}, attendance: 0.8}, } for _, s := range students { fmt.Println("Student:", s.name) fmt.Println("Average Grade:", s.GetAverageGrade()) fmt.Println("Attendance:", s.attendance) fmt.Println() } }
在這個範例中,Student
類型具有姓名、成績和出席率欄位。 GetAverageGrade
方法計算學生的平均成績,而 main
函數示範如何使用自訂類型建立學生實例並存取其資訊。
以上是如何使用 Go 語言定義和使用自訂類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!