首頁 > 後端開發 > Golang > 主體

詳解Go語言中方法與函數的異同

WBOY
發布: 2024-04-03 10:51:01
原創
471 人瀏覽過

在 Go 中,方法與類型相關,透過類型名稱.方法名稱調用,可修改接收者值;而函數獨立於類型,直接透過函數名稱調用。方法與函數的區別:方法與類型相關,函數獨立於類型。方法透過型別名.方法名調用,函數直接透過函數名調用。方法可修改接收者值,函數不可。

詳解Go語言中方法與函數的異同

Go語言中的方法與函數

背景

在Go語言中,方法和函數都是程式碼區塊,用於執行特定任務。但是,它們之間存在著一些關鍵的差異。

方法

方法與特定類型相關。它們是該類型的值的成員,因此可以使用類型名稱後跟點號來呼叫。

type Person struct {
    name string
}

func (p Person) Greet() {
    fmt.Println("Hello, my name is", p.name)
}
登入後複製

在上面的範例中,GreetPerson類型的方法,它可以透過p.Greet()呼叫。

函數

函數是獨立於類型的程式碼區塊。它們使用func關鍵字定義,並可以透過​​其函數名稱直接呼叫。

func Greet(name string) {
    fmt.Println("Hello,", name)
}
登入後複製

在上面的範例中,Greet是一個函數,它透過Greet("John")調用,其中 "John"是作為參數傳遞的。

異同

與特定類型相關與類型無關##呼叫語法#存取接收者可以透過this
#特徵方法函數
##關聯類型
型別名稱.方法名稱函數名稱

*this

存取類型的值

無法存取

實戰案例

場景: 撰寫程式管理學生記錄。 實作:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>type Student struct { name string age int } func (s *Student) GetName() string { return s.name } func (s *Student) SetName(name string) { s.name = name } func main() { student := &amp;Student{&quot;John&quot;, 20} fmt.Println(student.GetName()) // 输出:&quot;John&quot; student.SetName(&quot;Jane&quot;) fmt.Println(student.GetName()) // 输出:&quot;Jane&quot; }</pre><div class="contentsignin">登入後複製</div></div>在這個範例中,Student<p>類型有一個<code>GetName方法,用來檢索學生的名字,和一個SetName方法,用來設定學生的名字。透過使用指標接收器

(*Student)###,方法可以修改接收者值。 ######函數###main###建立了一個###Student###類型的結構,並使用其方法來管理學生的資料。 ###

以上是詳解Go語言中方法與函數的異同的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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