GoLang學習十二 函式

2021-10-08 10:04:40 字數 2427 閱讀 3230

函式是執行特定任務的**塊。
go語言至少有乙個main函式

語法格式:

func

funcname

(parametername type1, par ametername type2)

(output1 type1, output2 type2)

● funcname首字母大寫公有,小寫私有

● func: 函式由func開始宣告

● funcname: 函式名稱,函式名和引數列表一起構成了函式簽名。

● parametername type:引數列表,引數就像乙個佔位符,當函式被呼叫時,你可以將值傳遞給引數,這個值被稱為實際引數。引數列表指定的是引數型別、順序、及引數個數。引數是可選的,也就是說函式也可以不包含引數。

● output1 type1, output2 type2:返回型別,函式返回一列值。return_types 是該列值的資料型別。有些功能不需要返回值,這種情況下return_types 不是必須的。

●.上面返回值宣告了兩個變數output1和output2,如果你不想宣告也可以,直接就兩個型別。

● 如果只有乙個返回值且不宣告返回值變數,那麼你可以省略包括返回值的括號(即一 個返回值可以不宣告

形式引數:定義函式時,用於接收外部傳入的資料,叫做形式引數,簡稱形參。

實際引數:呼叫函式時,傳給形參的實際的資料,叫做實際引數,簡稱實參。

函式呼叫:

go函式支援變參。接受變參的函式是有著不定數量的引數的。為了做到這點,首先需要定義函式使其接受變參:

示例**:

func

myfunc

(arg ...

int)

arg … int 告訴go這個函式接受不定數量的引數。注意,這些引數的型別全部是int。在函式體中,變數arg是乙個int的slice:

func

getsum2

(nums ...

int)

fmt.

printf

("nums=%t, sum=%d\n"

, nums, sum)

}

func

main()

func

getsum()

fmt.

println

(sum)

}func

getsum1

(n int

) fmt.

println

(sum)

}func

getadd

(a int

, b int

)func

getadd2

(a, b int

, c string

)func

getsum2

(nums ...

int)

fmt.

printf

("nums=%t, sum=%d\n"

, nums, sum)

}

go語言函式的引數也是存在值傳遞和引用傳遞

函式運用場景

值傳遞getsquareroot 也是乙個函式

func

main()

fmt.

println

(getsquareroot(9

))}

引用傳遞

這就牽扯到了所謂的指標。我們知道,變數在記憶體中是存放於一定位址上的,修改變數實際是修改變數位址處的記憶體。只有add1函式知道x變數所在的位址,才能修改x變數的值。所以我們需要將x所在位址&x傳入函式,並將函式的引數的型別int改為*int,即改為指標型別,才能在函式中修改x變數的值。此時引數仍然是按copy傳遞的,只是copy的是乙個指標。請看下面的例子

如果函式的引數就是引用型別(切片,map。。。),那麼就是引用傳遞,傳遞是資料和位址

函式內部修改了,外面同樣發生修改

乙個函式被呼叫後,返回給呼叫處的執行結果,叫做函式的返回值。

呼叫處需要使用變數接收該結果

乙個函式可以沒有返回值,也可以有-乙個返回值,也可以有返回多個值。

func

getsum3

(n int

)(sum int

)return sum

}func

getsum4

(n int)(

int)

return sum

}func

getsum5

(n int

)(sum int

, count int

)return sum, count

}

Golang教程 (十二)變參函式

原文 這是本golang系列教程的第十二篇。變參函式是指可以接受可變數量的引數的函式。如果乙個函式的最後乙個引數由.t表示,則表示該函式可以接受任意數量的型別為t的引數。請注意只有函式的最後乙個引數才能指定為可變引數。讓我們來建立乙個自己的變參函式。我們將編寫乙個程式來判斷某個特定整數是否包含在某個...

golang學習(十二) 陣列的使用細節

1.陣列是多個相同型別資料的組合,乙個陣列一旦宣告了,其長度是固定的,不能動態變化。2.var arr int 此時arr就是乙個slice切片。3.陣列中的元素可以是任何資料型別,包括值型別和引用型別。4.陣列建立後,如果沒有賦值,有預設值 零值 數值型別陣列 預設值為0 字串陣列 預設為 boo...

golang基礎學習 函式

函式 函式是結構化程式設計中最小的模組單元,日常開發過程中,將複雜的演算法過程分解為若干個小任務 塊 使程式的結構性更清晰,程式可讀性提公升,易於後期維護和讓別人讀懂你的 編寫多個函式的主要目的是將乙個需要很多行 的複雜問題分解為一系列簡單的任務 那就是函式 來解決。在實際程式設計中,我們把重複性的...