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