方法是與物件例項繫結的特殊函式。
用於維護和展示物件自身的狀態。物件是內斂的。普通函式則專注與演算法流程,通過接受引數來完成特定的邏輯運算,並返回最終結果,方法是有關聯狀態的,函式通常是沒有的。
方法和函式定義語法區別在於前者例項接受引數,編譯器以此確定方法所屬的型別。在一些語言中儘管沒有定義,但是函式使用了隱式的傳遞this例項引數。
可以為當前包,以及除介面和指標以外的任何型別定義方法。方法同樣不支援過載,receiver引數名沒有限制。不推薦使用this和self。方法可以看做特殊的函式,那麼receiver的型別自然可以是基礎型別或指標。這會關係到呼叫時物件例項是否被複製。
不可以使用多級指標呼叫方法。
指標型別的receiver必須是合法指標(包括nil),或能獲取例項位址。
如何選擇方法的接收器型別:
匿名字段:
方法集:
表示式:
package main
import "fmt"
type n int
func main()
func (number n)tostring() string
執行結果: d
package main
import "fmt"
type n int
func main()
func (n n) value()
func (n *n) pointer()
/*執行結果:
v: 0xc04204c088, 26
p: 0xc04204c080, 26
a: 0xc04204c080, 2
*/
Go語言之GO 語言常量
相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...
Go語言之Go語言網路程式設計
go語言的 net 包中有乙個 tcpconn 型別,可以用來建立 tcp 客戶端和 tcp 伺服器端間的通訊通道,tcpconn 型別裡有兩個主要的函式 func c tcpconn write b byte n int,err os.error func c tcpconn read b byt...
Go語言之Go 語言迴圈語句
go 語言提供了以下幾種型別迴圈處理語句 迴圈型別 描述for 迴圈 重複執行語句塊 迴圈巢狀 在 for 迴圈中巢狀乙個或多個 for 迴圈 迴圈控制語句可以控制迴圈體內語句的執行過程。go 語言支援以下幾種迴圈控制語句 控制語句 描述break 語句 經常用於中斷當前 for 迴圈或跳出 swi...