1)函式的形參列表可以是多個,返回值列表也可以是多個。
2)形參列表和返回值列表的資料型別可以是值型別和引用型別
3)函式的命名遵循識別符號命名規範,首字母不能是數字,首字母大寫該函式可以被本報檔案和其它包檔案使用,類似public,首字母小寫,只能被本包使用,其它包檔案不能使用,類似private
4)函式中的變數是區域性的,函式外不生效
func test()
func main()
5)基本資料型別和陣列預設都是值傳遞的,即進行值拷貝。在函式內修改,不會影響到原來的值。
func test02(n1 int)
func main()
[shell] go run main.go
test02() n1 = 30
main() num = 20
6)如果希望函式內的變數能修改函式外的變數(指的是預設以值傳遞的方式的資料型別),可以傳入變數的位址&,函式內以指標的方式操作變數。從效果上看類似引用
func test03(n1 *int)
func main()
[shell]go run main.go
test03() n1 = 30
main() num = 30
上面**的示意圖:
7)go函式不支援函式過載:
8)在go中,函式也是一種資料型別,可以賦值給乙個變數,則該變數就是乙個函式型別的變數了。通過該變數可以對函式呼叫。
func getsum(n1 int, n2 int) int
func main()
9)函式既然是一種資料型別,因此在go中,函式可以作為形參,並且呼叫!
10)為了簡化資料型別定義,go支援自定義資料型別
基本語法: type 自定義資料型別名 資料型別 // 理解:相當於乙個別名
案例:type myint int // 這時 myint 就等價 int 來使用了。
案例:type mysum func (int, int) int // 這時 mysum 就等價 乙個 函式型別 func (int , int) int
例子1:
func main()
例子2:
func getsum(n1 int, n2 int) int
type myfuntype func(int, int) int //這時這個myfuntype就是func(int,int) int 型別
func myfun2(funvar myfuntype, num1 int, num2 int) int
func main()
11)支援對函式返回值命名
func getsumandsub(n1 int, n2 int) (sum int, sub int)
func main()
12)使用 _ 識別符號,忽略返回值
func cal(n1 int, n2 int) (sum int, sub int)
func main()
13) go支援可變引數
//支援0到多個引數
func sum(args... int) sum int
//支援1到多個引數
func sum(n1 int, args... int) sum int
說明:(1) args 是slice(切片),通過 args[index] 可以訪問到各個值。
(2) 案例演示:編寫乙個函式sum,可以求出 1 到多個int的和
(3) 如果乙個函式的形參列表中有可變引數,則可變引數需要放在形參列表的最後,否則語法是不通過的。
**演示:
func sum(n1 int,args... int) int
return sum
}func main()
inline函式注意事項
1.在類中定義這種函式 class classname 如果在類中直接定義,不需要用inline修飾,編譯器自動化為 內聯函式 此說法在 c primer 中提及 2.在類外定義前加inline 關鍵字 class account 與1相同 double getbalance 在類中宣告 doubl...
memset函式注意事項
memset 函式是記憶體賦值函式,用來給某一塊記憶體空間進行賦值的。其原型是 void memset void dst,int val,size t size 使用時在檔案頭加上 include stdlib.h dst是目標起始位址,val是要賦的值,size是要賦值的位元組數。例1 char ...
printf函式注意事項
如果m為負數,則右對齊 右側補空白 printf 5d 88 輸出結果 88 如果m為正數,則左對齊 左側補空白 printf 5d 88 輸出結果 88 0md 表示,位數不足部分補 0 printf 05d 88 輸出結果 00088 常用於日期,處理等 printf f 1.0 3 輸出結果 ...