之前說過Go語言的函數了,這次剖析一下這個Go的函數參數
函數如果使用參數,該變量可稱為函數的形參。
形參就像定義在函數體内的局部變量。
調用函數,可以通過兩種方式來傳遞參數:
第一種是值傳遞:
所謂的值傳遞是指在調用函數時将實際參數複制一份傳遞到函數中,這樣在函數中如果對參數進行修改,将不會影響到實際參數。
第二種是引用傳遞:
而引用傳遞是指在調用函數時将實際參數的位址傳遞到函數中,那麼在函數中對參數所進行的修改,将影響到實際參數。
我們可以寫個Demo來測試一下這個值傳遞

Demo運作結果如下
程式中使用的是值傳遞, 是以兩個值并沒有實作互動,我們可以使用 引用傳遞 來實作交換效果。
Go 語言函數引用傳遞值
引用傳遞是指在調用函數時将實際參數的位址傳遞到函數中,那麼在函數中對參數所進行的修改,将影響到實際參數。
寫個測試搞一下試試
看,這次傳遞值就過去了
預設情況下,Go 語言使用的是值傳遞,即在調用過程中不會影響到實際參數。
還有就是 函數定義後可作為值來使用
Go 語言可以很靈活的建立函數,并作為值使用。以下執行個體中我們在定義的函數中初始化一個變量,該函數僅僅是為了使用内置函數 math.sqrt()
Demo執行個體
Demo結果
sqrt() 這個方法就是和JAVA中類似的那個 求平方根的那個
而且Go語言同時也是支援匿名函數的,和JAVA中的匿名方法似的。
Go 語言支援匿名函數,可作為閉包。匿名函數是一個"内聯"語句或表達式。匿名函數的優越性在于可以直接使用函數内的變量,不必申明。
以下執行個體中,我們建立了函數 getSequence() ,傳回另外一個函數。該函數的目的是在閉包中遞增 i 變量,
看執行結果
接下來我們在看看 Go 語言函數方法
Go 語言中同時有函數和方法。一個方法就是一個包含了接受者的函數,接受者可以是命名類型或者結構體類型的一個值或者是一個指針。所有給定類型的方法屬于該類型的方法集。
文法格式如下:
func (variable_name variable_data_type) function_name() [return_type]{
/* 函數體*/
}
下面我們用一個Demo來示範一下
執行結果示範