go語言基礎 函式

2021-08-19 13:38:33 字數 4895 閱讀 5163

函式:

一、概念

函式,就是一段具有特殊功能的**。

二、作用

避免重複的**

提高程式的擴充套件性

三、語法

1.先定義,也叫宣告

func 函式名([形參列表:引數名 引數型別])(返回值:){}

2.再呼叫

函式名一致,實參列表必須嚴格匹配形參

函式可以被多次呼叫,叫呼叫處。

packagemain

import"fmt"

funcmain()

func:關鍵字

funcname:函式名字,就是乙個識別符號

首字母大寫:公共的,首字母小寫:私有的

引數列表:函式執行時,需要外部傳入資料

返回值:函式執行後,返回給呼叫處的結果

(),函式的標誌

注意事項:

1.函式必須先宣告定義,然後再進行呼叫

2.函式呼叫:函式名()

3.函式名不能衝突

4.main(),是程式的入口,自動呼叫執行。

*///1.求1-10的和

//進行函式的呼叫

getsum() // 函式的呼叫處

fmt.println("helloworld..")

//求1-10的和

getsum()

fmt.println("王二狗")

//1-10的和

getsum()}/*

定義乙個函式:用於求1-10的和

*/funcgetsum()

fmt.println("1-10的和是:"

,sum)

}

四、引數

當乙個函式中有的資料不確定,由呼叫處來確定,那麼可以宣告為該函式的引數。

func 函式名(引數名1 引數型別,引數名2 引數型別)

如果多個引數型別一致,可以簡化寫法

引數:在函式中也是區域性變數。

packagemain

import"fmt"

/*函式的引數:

形式引數列表:

函式在執行過程中,需要由外部傳入資料。

實際引數列表:

呼叫函式時,傳入的具體的資料,叫做實參

呼叫:a:函式名必須一致

b:實參嚴格匹配形參:一一對應

型別,個數,順序

func 函式名(引數名 引數型別,引數名 引數型別)

引數列表: 引數名 引數型別

如果多個引數型別一致,可以省略成乙個。

*/funcmain()

// 求1-n的和

funcgetsum2(n int)

fmt.printf("1-%d的和:%d\n"

,n, sum)

}funcgetadd1(num1, num2 int)

functest1(a, b int

, c string)

functest2(c string

, a, b int)

五、返回值

乙個函式執行後,返回給呼叫處的結果。可以沒有,可以乙個,可以多個。。

func 函式名()(返回值名 返回值型別,返回值名 返回值型別)

func 函式名()(返回值型別,返回值型別)

宣告時,如果不指明返回值名,可以寫在return 後邊

return:詞意"返回"

a:將return後的資料,返回給呼叫處。

b:同時會結束該函式的執行。

注意點:

1.如果乙個函式沒有宣告返回值,也可以使用return,用於結束函式

2.如果乙個函式宣告有返回值,那麼函式中必須使用return返回結果。保證個數,順序,型別對應。

3.如果乙個函式宣告有返回值,函式中如果有分支,迴圈,保證無論執行哪個分支,都有return可以被執行到。

packagemain

import"fmt"

/*函式的返回值:

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

需要借助於return關鍵字:

a:表示將return後的資料,返回給呼叫處

b:結束該函式的執行。

函式名聲時需要寫清楚:返回值的定義

func 函式名 (形參列表) 返回值宣告

*/funcmain()

//1-10的和

funcgetsum3()int

returnsum // return表示將後面的資料,返回給呼叫處

}// 也可以這樣寫:

funcgetsum4()(sum int)

return// 函式宣告時,寫清楚了返回值變數,那麼此處可以省略不寫

}//設計乙個函式,用於求乙個矩形的面積和周長。

funcrect(width, length float64)(area float64

,peri float64)

funcrect2(wid, len float64)(float64

,float64)

六、可變引數

乙個函式的引數的個數不定,但是型別確定,那麼可以使用可變引數。

引數名...型別

個數:0個-多個

可變引數在函式中,相當於切片

注意點:

乙個函式中最多隻可以宣告乙個可變引數。

如果引數列表中還有其他的引數,那麼可變引數寫在引數列表的最後

packagemain

import"fmt"

funcmain()

fmt.println(getsum5(s1...))

100,

200,

300)

s2 := int

}// 定義乙個函式,用於求n個整數的和

funcgetsum5( nums ... int) int

returnsum

}

七、引數傳遞

a:值傳遞:將數值的副本(備份)傳遞。和原始資料無關。

int,float64,string,陣列

slice,map

packagemain

import"fmt"

funcmain() // [4]int

fmt.printf("%t\n"

,a1)

a2:= a1 // 值傳遞:陣列將自己的資料備份乙份,傳遞給a2

fmt.println(a1)

fmt.println(a2)

a2[0] = 1000

fmt.println(a2)

fmt.println(a1)

fmt.println("函式呼叫前:數值的內容:"

,a1) //[1 2 3 4]

fun11(a1)

fmt.println("函式呼叫後:陣列的內容;"

,a1)//[1,2,3,4]

fmt.println("-------------------")

s1 :=int

s2 := s1 // 是引用型別,傳遞是位址,s1和s2指向同一塊記憶體

s2[0] = 10

fmt.println(s1) // [10, 2, 3, 4]

fmt.println(s2) //[10, 2, 3, 4]

fun12(s1)

fmt.println(s1)

fmt.println(s2)

}funcfun10(m, n int)

funcfun11(b1 [4]int)

funcfun12(s3 int)

八、作用域

乙個變數的適用範圍。{}

if{}

for{}

main(){}

func test1(){}

區域性變數:函式中宣告的變數,叫做區域性變數,那麼作用域是該函式內。

全域性變數:函式外宣告的變數,叫全域性變數,所有的函式都可以使用,共享乙份。

packagemain

import"fmt"

// 全域性變數,不能使用:=

varm = 1000

funcmain()

*/fori:=0

;i<3

;i++

j := 100

fmt.println(j)

fmt.println(m)

fun7()

fun8()

fmt.println(m)

}funcfun7()

funcfun8()

Go語言基礎之函式

go語言中支援函式 匿名函式和閉包,並且函式在go語言中屬於 一等公民 go語言中定義函式使用func關鍵字,具體格式如下 func 函式名 引數 返回值 其中 我們先來定義乙個求兩個數之和的函式 func intsum x int,y int int 函式的引數和返回值都是可選的,例如我們可以實現...

Go 語言基礎

go 語言內建的運算子有 1.算術運算子 2.關係運算子 3.邏輯運算子 4.位運算子 將其先轉換為二進位制數,在根據如下表規則 p q p q p q p q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1如假定 a 60 b 13 其二進位制數轉換為 a 0011...

Go語言基礎

目錄 一.go語言內建關鍵字 二.go語言注釋方法 三.專案結構 四.程式結構 五.包的匯入 六.package的別名 七.可見性規則 單行注釋 多行注釋 go程式是通過package來組織的 只有package 名稱為main的包可以包含main函式 乙個可執行程式有且僅有乙個main包 初步練習...