函數(shù)和方法
關鍵字func和函數(shù)名之間的參數(shù)被稱作接收者,將函數(shù)與接收者的類型綁在一起。如果一個函數(shù)有接收者,這個函數(shù)就被稱為方法
方法接收者
Go語言里方法有兩種類型的接收者:
值接收者和指針接收者
在聲明一個新類型之后,聲明一個該類型的方法之前,需要先回答一個問題:這個類型的本質是什么。如果給這個類型增加或者刪除某個值,是要創(chuàng)建一個新值,還是要更改當前的值?如果是要創(chuàng)建一個新值,該類型的方法就使用值接收者。如果是要修改當前值,就使用指針接收者。這個答案也會影響程序內部傳遞這個類型的值的方式:是按值做傳遞,還是按指針做傳遞。保持傳遞的一致性很重要。這個背后的原則是,不要只關注某個方法是如何處理這個值,而是要關注這個值的本質是什么。