結構體(Struct)和方法(Method)是 Go 語言中非常重要的概念,用於定義自定義型別和該型別的行為。讓我們來看一下結構體和方法在 Go 中的基本用法和示例。
結構體(Struct)
結構體是一種使用者自定義的資料型別,用於封裝多個不同型別的資料欄位。在結構體中,這些欄位被稱為結構體的成員(Fields)。
定義結構體
結構體透過 type
和 struct
關鍵字定義,如下所示:
package main import "fmt" // 定義結構體 type Person struct { Name string Age int Gender string } func main() { // 建立結構體例項 var p1 Person p1.Name = "Alice" p1.Age = 30 p1.Gender = "Female" fmt.Println(p1) // 輸出:{Alice 30 Female} // 另一種初始化方式 p2 := Person{"Bob", 25, "Male"} fmt.Println(p2) // 輸出:{Bob 25 Male} }
匿名結構體
可以在定義時不指定結構體的名稱,稱為匿名結構體。通常用於臨時資料結構的定義:
package main import "fmt" func main() { // 定義匿名結構體 p := struct { Name string Age int Gender string }{ Name: "Alice", Age: 30, Gender: "Female", } fmt.Println(p) // 輸出:{Alice 30 Female} }
方法(Method)
方法是一種與結構體關聯的函式,允許結構體例項執行特定的操作。在 Go 中,方法是透過將函式與特定型別關聯而實現的。
定義方法
方法的定義與普通函式類似,但在函式名前面加上接收者(Receiver),即方法所屬的結構體型別。
package main import "fmt" // 定義結構體 type Rectangle struct { Width float64 Height float64 } // 定義方法:計算面積 func (r Rectangle) Area() float64 { return r.Width * r.Height } func main() { // 建立結構體例項 rect := Rectangle{Width: 10, Height: 5} // 呼叫方法 fmt.Println("Width:", rect.Width) fmt.Println("Height:", rect.Height) fmt.Println("Area:", rect.Area()) // 呼叫結構體的方法計算面積 }
在上面的例子中,Area()
方法屬於 Rectangle
結構體,透過 (r Rectangle)
指定了該方法的接收者是 Rectangle
型別的例項 r
。透過這種方式,可以在方法內部訪問和操作結構體的欄位。
小結
- 結構體用於封裝多個欄位,定義自定義的複合資料型別。
- 方法是與結構體關聯的函式,允許對結構體例項進行操作和處理。
- 使用結構體和方法可以更加靈活和清晰地組織程式碼,提高程式碼的可讀性和可維護性。