首頁 > 後端開發 > Golang > golang struct 方法

golang struct 方法

PHPz
發布: 2023-05-27 11:26:07
原創
804 人瀏覽過

Golang是一門現代化的高效能程式語言,其獨特的資料型態 struct(結構體)是這門語言中最重要的一個元件之一。不僅如此,在Golang中,結構體也支援方法(Method)的定義,因此,在本篇文章中,我們將著重討論golang struct方法。

I. 什麼是golang結構體?

在Golang中,結構體是一種使用者自訂資料類型,它能夠封裝一組相關的資料欄位。結構體通常用於描述複雜的資料結構,從而更好地管理和使用資料。

一個Golang的結構體定義通常包含若干個字段,字段可以是基本資料類型(例如int、float等)或其他結構體類型和指標類型。下面是一個簡單的Golang結構體定義範例:

type Person struct {
    Name string
    Age int
    Address string
}
登入後複製

上述程式碼定義了一個Person結構體類型,它包含了三個欄位 Name、Age 和 Address。這裡要注意的是,結構體字段的首字母的大小寫決定了字段是否能夠被其他包(包括main包)訪問,如何訪問見下例:

package main

import (
    "fmt"
)

type Person struct {
    Name string
    age int //小写开头
    Address string
}

func main() {
    p1 := Person{"Bob", 30, "Beijing"}
    fmt.Println(p1.Name) // Bob
    fmt.Println(p1.Address) // Beijing
    fmt.Println(p1.age) // 编译错误,age未导出
}
登入後複製

II. golang結構體方法的定義

在Golang中,結構體方法是一種函數,它能夠存取結構體的字段和其他的相關數據,並且可以在方法中修改結構體的字段值。方法也可以傳回一個值,或是在方法執行過程中發生錯誤時傳回錯誤。任何一個結構體類型都可以擁有方法,方法可以定義在任何套件中。

Golang中方法的定義方式類似於函數,但其在定義中需要指定接收者類型。接收者類型可以是結構體型別或其指標型別(這裡的指標型別類似C 中的參考型別),表示方法將要操作的結構體物件。方法的定義語法如下:

func (t Type) MethodName(parameterlist) (returntype) {
// function body
}
登入後複製

其中,Type表示接收器的類型,而MethodName則是方法名,parameterlist定義了方法的參數列表,returntype則是方法的回傳類型,如果沒有傳回值則可以省略該部分。

下面是一個用於結構體的方法範例:

type Rectangle struct {
     width float64
     height float64
}

func (r Rectangle) Area() float64 {
    return r.width * r.height
}
登入後複製

上述程式碼量定義了一個名為Rectangle的結構體類型,其中包含width和height兩個字段,同時也定義了一個Area方法,該方法傳回該矩形的面積,其中接收器r就是該矩形本身。

III. golang結構體的方法調用

方法的調用方式類似於普通函數調用,只不過前面需要加上接收器對象,Golang為此提供了兩種調用方式。

第一種是值方法調用,當透過值方法呼叫結構體的方法時,會先建立結構體的一個副本,然後對該副本進行操作並傳回結果。以下是一個值方法調用的範例:

func main() {
     r := Rectangle{5, 10}
     a := r.Area() //调用值方法
     fmt.Println("area: ", a) //输出结果
}
登入後複製

輸出結果為:

area: 50
登入後複製

第二種是指標方法調用,透過指標呼叫的方法接收器指標類型,會直接對原結構體進行操作,因此往往比值方法更有效率。以下是一個指標方法呼叫的範例:

func (r *Rectangle) Scale(w, h float64) {
     r.width *= w
     r.height *= h
}

func main() {
     r := Rectangle{5, 10}
     r.Scale(2, 5) // 调用指针方法
     fmt.Println(r.width, r.height) // 输出结果
}
登入後複製

輸出結果為:

10 50
登入後複製

IV. golang結構體方法總結

在本篇文章中,我們學習了Golang中結構體的定義和方法的定義和呼叫。 struct結構體類型是Golang語言中的重要元件,它能夠封裝一個相關的資料集合。同時,方法擴展了結構體的功能,使程式設計師能夠更好地操作和管理結構體中的資料。最後,我們需要注意的是,方法可以是接收器類型的值方法,也可以是指標方法,因此我們需要在實際應用中選擇適當的呼叫方式。

以上是golang struct 方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板