在 Go 中,方法與類型相關,透過類型名稱.方法名稱調用,可修改接收者值;而函數獨立於類型,直接透過函數名稱調用。方法與函數的區別:方法與類型相關,函數獨立於類型。方法透過型別名.方法名調用,函數直接透過函數名調用。方法可修改接收者值,函數不可。
在Go語言中,方法和函數都是程式碼區塊,用於執行特定任務。但是,它們之間存在著一些關鍵的差異。
方法與特定類型相關。它們是該類型的值的成員,因此可以使用類型名稱後跟點號來呼叫。
type Person struct { name string } func (p Person) Greet() { fmt.Println("Hello, my name is", p.name) }
在上面的範例中,Greet
是Person
類型的方法
,它可以透過p.Greet()
呼叫。
函數是獨立於類型的程式碼區塊。它們使用func
關鍵字定義,並可以透過其函數名稱直接呼叫。
func Greet(name string) { fmt.Println("Hello,", name) }
在上面的範例中,Greet
是一個函數
,它透過Greet("John")
調用,其中 "John"
是作為參數傳遞的。
#特徵 | 方法 | 函數 |
---|---|---|
##關聯類型 | 與特定類型相關與類型無關 | |
型別名稱.方法名稱 | 函數名稱
| #存取接收者
無法存取
實戰案例
場景:
撰寫程式管理學生記錄。 實作:
<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 := &Student{"John", 20}
fmt.Println(student.GetName()) // 输出:"John"
student.SetName("Jane")
fmt.Println(student.GetName()) // 输出:"Jane"
}</pre><div class="contentsignin">登入後複製</div></div>在這個範例中,Student<p>類型有一個<code>GetName
方法,用來檢索學生的名字,和一個SetName
方法,用來設定學生的名字。透過使用指標接收器
以上是詳解Go語言中方法與函數的異同的詳細內容。更多資訊請關注PHP中文網其他相關文章!