函式
函式是結構化程式設計中最小的模組單元,日常開發過程中,將複雜的演算法過程分解為若干個小任務(**塊),使程式的結構性更清晰,程式可讀性提公升,易於後期維護和讓別人讀懂你的**。編寫多個函式的主要目的是將乙個需要很多行**的複雜問題分解為一系列簡單的任務(那就是函式)來解決。在實際程式設計中,我們把重複性的任務抽象成乙個函式。
和所有的程式語言一樣,go語言支援各種風格的函式。在go語言中,當函式執行到**塊最後一行}之前或者return語句的時候會退出,其中 return 語句可以帶有零個或多個引數;這些引數將作為返回值供呼叫者使用。簡單的 return 語句也可以用來結束 for 死迴圈,或者結束乙個go協程(goroutine)。
定義語法
go語言中函式基本組成:關鍵字func、函式名、引數列表、返回值、函式體和返回語句。
語法如下:
func 函式名(引數列表) (返回值列表)
這裡需要強調的是,go語言函式的返回值型別和變數定義的資料型別一樣,都要遵循go語言的「後置原則」放在後面,這一點和c語言函式定義有顯著不同。
另外,go語言函式定義中如果引數列表中若干個相鄰引數的型別相同,則可以在引數列表中省略前面的變數型別宣告。
func add(a, b int) int
最後,go語言函式定義中左花括號的位置被強制規範,如果左花括號放置不規範,golang編譯器會報編譯錯誤。
//錯誤!!!左括號必須緊跟在括號後面
func hello()
多值返回
go語言的函式可以返回不止乙個結果,即支援「多值返回」。
go語言函式多值返回一般用於處理錯誤。比如在io操作時候,不一定每次都能成功:可能檔案不存在或者磁碟損壞無法讀取檔案。所以一般在函式呼叫發生錯誤時返回乙個附加的結果作為錯誤值,習慣上將錯誤值作為最後乙個結果返回。
func sumproductdiff(i, j int) (int, int, int)
不定引數
如果你對python比較熟悉,你會知道python函式引數個數可以是不確定的。和python類似,go語言函式也支援可變的引數個數。
在引數列表的最後型別名稱前面使用省略號「…」來表示宣告乙個變長函式,呼叫該函式的時候可以傳遞該型別任意數目的引數。
func 函式名(args ...type) (返回值列表)
函式呼叫
package main
import "fmt"
func main()
/* 函式返回兩個數的最大值 */
func max(num1, num2 int) int else
return result
}
最大值是 : 200
示例
package main
import(
"fmt"
) func add(i int, j int) (int)
func add_multi_sub(i, j int) (int, int, int)
func sum(nums ...int)
fmt.println(total)
} func main()
var c int = add(a,b)
fmt.println("-----------------------")
d,e,f := add_multi_sub(a,b)
fmt.println("-----------------------")
fmt.println(c,d,e,f)
fmt.println("-----------------------")
fmt.println("\n")
sum(arr...) //注意傳參形式
}
結果
楊輝三角
package main
import "fmt"
//行數
const lines int = 10
// 楊輝三角
乘法表
package main
golang基礎 函式
函式func 函式名 引數列表 返回值列表 func funcname input1 type1,input2 type2 output1 type1,output2 type2 1 關鍵字 func 用來宣告乙個函式 funcname 2 函式可以有乙個或者多個引數,每個引數後面帶有型別,多個引數...
Golang學習 基礎
一 helloworld 首先是helloworld package main import fmt func main 編譯和執行 go buid hello.go hello 二 變數,常量 1.定義乙個變數 var a int var b int 10 c 10 等價於var c int 10...
golang基礎學習
golang語言基礎保留的關鍵字 1.golang語言的保留關鍵字 2.golang的基礎語法 package 3.golang的基礎語法 import import語法格式主要有兩種 如果乙個main匯入其他包,包將按順序依次匯入 如果匯入的包中依賴其他包 b包 會首先匯入b包,然後初始化b包中的...