函式:
一、概念
函式,就是一段具有特殊功能的**。
二、作用
避免重複的**
提高程式的擴充套件性
三、語法
1.先定義,也叫宣告
func 函式名([形參列表:引數名 引數型別])(返回值:){}
2.再呼叫
函式名一致,實參列表必須嚴格匹配形參
函式可以被多次呼叫,叫呼叫處。
packagemainimport"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 引數型別)
如果多個引數型別一致,可以簡化寫法
引數:在函式中也是區域性變數。
packagemainimport"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可以被執行到。
packagemainimport"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
packagemainimport"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(){}
區域性變數:函式中宣告的變數,叫做區域性變數,那麼作用域是該函式內。
全域性變數:函式外宣告的變數,叫全域性變數,所有的函式都可以使用,共享乙份。
packagemainimport"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包 初步練習...