### 聲明函數
```
func 函數名(參數列表) (返回參數列表) {
函數體
}
func 函數名() {
函數體
}
函數名:字母數字下劃線組成,不能數字開頭。同個包內函數名不能重復
參數列表:由參數名和類型組成,比如(x int) 。同類型可以簡寫,比如(x,y,int)
返回參數列表:由返回的參數名稱和類型組成,比如(num,int)。可以簡寫只寫返回參數的類型,比如(int)
函數體:若函數有返回參數的列表,必須有return語句返回,比如 return num。使用帶有變量名返回值時,可以直接使用return。
```
```
package main
import "fmt"
func addsub(x int, y int) (num int, sub int) {
// x, y 形參
num = x + y
sub = x * y
return num, sub
}
func main() {
a := 5 //a,b實參
b := 10
num, sub := addsub(a, b)
fmt.Println(num, sub)
// 15 50
}
```
### 函數變量
> **var 變量名稱 func(參數列表) (返回參數列表)**
> **var 變量名稱 func()**
> **變量名 := 函數名**
> 然后調用,其實都差不多,聲明了一個變量調用
```
package main
import "fmt"
func addsub(x int, y int) (num int, sub int) {
// x, y 形參
num = x + y
sub = x * y
return num, sub
}
func main() {
a := 5 //a,b實參
b := 10
// var result func(x int, y int) (num int, sub int)
// result = addsub
result := addsub
num, sub := result(a, b)
fmt.Println(num, sub)
// 15 50
}
```
### 可變參數
```
func 函數名 (固定參數列表,v ...T) (返回參數列表) {
函數體
}
v,變量名
T,類型
...,參數
```
```
package main
import "fmt"
func add(slices ...int) int {
sum := 0
fmt.Println("傳入的切片變量", slices)
// 傳入的切片變量 [1 2 3 4 5 6 7 8 9 10]
for _, value := range slices {
// "_" 這個是可變參數
sum += value
}
return sum
}
func main() {
fmt.Println("1+2+3......+9+10=", add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
// 1+2+3......+9+10= 55
}
```
```
package main
import "fmt"
func main() {
nums := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
sum := 0
for _, value := range nums {
sum += value
}
fmt.Println(sum)
//55
}
```
可變參數還是牛逼啊!!!!
- 安裝開發環境
- 安裝開發環境
- 安裝詳細教程
- 引入包
- Go語言基礎
- 基本變量與數據類型
- 變量
- 數據類型
- 指針
- 字符串
- 代碼總結
- 常量與運算符
- 常量
- 運算符
- 流程控制
- if判斷
- for循環
- switch分支
- goto跳轉
- 斐波那契數列
- Go語言內置容器
- 數組
- 切片
- 映射
- 函數
- 函數(上)
- 函數(中)
- 函數(下)
- 小節
- 包管理
- 結構體
- 結構體(上)
- 結構體(中)
- 結構體(下)
- 小節
- 錯誤處理
- 錯誤處理
- 宕機
- 錯誤應用
- 小節
- 文件操作
- 獲取目錄
- 創建和刪除目錄
- 文件基本操作(上)
- 文件基本操作(中)
- 文件基本操作(下)
- 處理JSON文件
- 接口與類型
- 接口的創建與實現
- 接口賦值
- 接口嵌入
- 空接口
- 類型斷言(1)
- 類型斷言(2)
- 小節
- 并發與通道
- goroutine協程
- runtime包
- 通道channel
- 單向通道channel
- select
- 線程同步
- 多線程的深入學習
- http編程
- http簡介
- Client和Request
- get請求
- post請求
- 模塊函數方法
- 模塊
- fmt庫,模塊
- 項目練習
- 爬蟲:高三網
- 爬蟲:快代理
- 爬蟲:快代理2
- 多線程:通道思路
- 多線程爬蟲:快代理