日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go函数详解:函数定义、形参、返回值定义规范、函数内存分析、不支持重载、支持可变参数、基本数据类型和数组默认都是值传递的、支持自定义数据类型、函数返回值命名

發(fā)布時間:2025/1/21 编程问答 35 豆豆

引入

【1】為什么要使用函數(shù):
提高代碼的復(fù)用型,減少代碼的冗余,代碼的維護(hù)性也提高了

【2】函數(shù)的定義:
為完成某一功能的程序指令(語句)的集合,稱為函數(shù)。

【3】基本語法

func 函數(shù)名(形參列表)(返回值類型列表){執(zhí)行語句..return + 返回值列表 }

【4】函數(shù)的定義和函數(shù)的調(diào)用案例:

package main import "fmt" // func 函數(shù)名(形參列表)(返回值類型列表){ // 執(zhí)行語句.. // return + 返回值列表 // } //自定義函數(shù):功能:兩個數(shù)相加: func cal (num1 int,num2 int) (int) { //如果返回值類型就一個的話,那么()是可以省略不寫的var sum int = 0sum += num1sum += num2return sum } func main(){//功能:10 + 20//調(diào)用函數(shù):sum := cal(10,20)fmt.Println(sum)// var num1 int = 10// var num2 int = 20//求和:// var sum int = 0// sum += num1// sum += num2// fmt.Println(sum)//功能:30 + 50var num3 int = 30var num4 int = 50//調(diào)用函數(shù):sum1 := cal(num3,num4)fmt.Println(sum1)//求和:// var sum1 int = 0// sum1 += num3// sum1 += num4// fmt.Println(sum1) }

函數(shù)使用細(xì)節(jié)一:形參、返回值

【1】函數(shù):
對特定的功能進(jìn)行提取,形成一個代碼片段,這個代碼片段就是我們所說的函數(shù)
【2】函數(shù)的作用:提高代碼的復(fù)用性
【3】函數(shù)和函數(shù)是并列的關(guān)系,所以我們定義的函數(shù)不能寫到main函數(shù)中
【4】基本語法

func 函數(shù)名(形參列表)(返回值類型列表){執(zhí)行語句..return + 返回值列表 }

(1)函數(shù)名:
遵循標(biāo)識符命名規(guī)范:見名知意 addNum,駝峰命名addNum
首字母不能是數(shù)字
首字母大寫該函數(shù)可以被本包文件和其它包文件使用(類似public)
首學(xué)母小寫只能被本包文件使用,其它包文件不能使用(類似private)

(2)形參列表:
形參列表:個數(shù):可以是一個參數(shù),可以是n個參數(shù),可以是0個參數(shù)
形式參數(shù)列表:作用:接收外來的數(shù)據(jù)
實(shí)際參數(shù):實(shí)際傳入的數(shù)據(jù)

(3)返回值類型列表:函數(shù)的返回值對應(yīng)的類型應(yīng)該寫在這個列表中
返回0個:

返回1個:

返回多個:

函數(shù)使用細(xì)節(jié)二:內(nèi)存分析

【5】通過例題感受內(nèi)存分析:

package main import "fmt" //自定義函數(shù):功能:交換兩個數(shù) func exchangeNum (num1 int,num2 int){ var t intt = num1num1 = num2num2 = t } func main(){ //調(diào)用函數(shù):交換10和20var num1 int = 10var num2 int = 20fmt.Printf("交換前的兩個數(shù): num1 = %v,num2 = %v \n",num1,num2)exchangeNum(num1,num2)fmt.Printf("交換后的兩個數(shù): num1 = %v,num2 = %v \n",num1,num2) }

內(nèi)存分析:

函數(shù)使用細(xì)節(jié)三:不支持重載

【6】Golang中函數(shù)不支持重載

【7】Golang中支持可變參數(shù) (如果你希望函數(shù)帶有可變數(shù)量的參數(shù))

package main import "fmt" //定義一個函數(shù),函數(shù)的參數(shù)為:可變參數(shù) ... 參數(shù)的數(shù)量可變 //args...int 可以傳入任意多個數(shù)量的int類型的數(shù)據(jù) 傳入0個,1個,,,,n個 func test (args...int){//函數(shù)內(nèi)部處理可變參數(shù)的時候,將可變參數(shù)當(dāng)做切片來處理//遍歷可變參數(shù):for i := 0; i < len(args); i++ {fmt.Println(args[i])} } func main(){ test()fmt.Println("--------------------")test(3)fmt.Println("--------------------")test(37,58,39,59,47) }

【8】基本數(shù)據(jù)類型和數(shù)組默認(rèn)都是值傳遞的,即進(jìn)行值拷貝。在函數(shù)內(nèi)修改,不會影響到原來的值。

【9】以值傳遞方式的數(shù)據(jù)類型,如果希望在函數(shù)內(nèi)的變量能修改函數(shù)外的變量,可以傳入變量的地址&,函數(shù)內(nèi)以指針的方式操作變量。從效果來看類似引用傳遞。

函數(shù)使用細(xì)節(jié)四:函數(shù)也是一種數(shù)據(jù)類型

【10】在Go中,函數(shù)也是一種數(shù)據(jù)類型,可以賦值給一個變量,則該變量就是一個函數(shù)類型的變量了。通過該變量可以對函數(shù)調(diào)用。

package main import "fmt" //定義一個函數(shù): func test(num int){fmt.Println(num) } func main(){//函數(shù)也是一種數(shù)據(jù)類型,可以賦值給一個變量 a := test//變量就是一個函數(shù)類型的變量fmt.Printf("a的類型是:%T,test函數(shù)的類型是:%T \n",a,test)//a的類型是:func(int),test函數(shù)的類型是:func(int)//通過該變量可以對函數(shù)調(diào)用a(10) //等價于 test(10) }

【11】函數(shù)既然是一種數(shù)據(jù)類型,因此在Go中,函數(shù)可以作為形參,并且調(diào)用
(把函數(shù)本身當(dāng)做一種數(shù)據(jù)類型)

package main import "fmt" //定義一個函數(shù): func test(num int){fmt.Println(num) } //定義一個函數(shù),把另一個函數(shù)作為形參: func test02 (num1 int ,num2 float32, testFunc func(int)){fmt.Println("-----test02") } func main(){//函數(shù)也是一種數(shù)據(jù)類型,可以賦值給一個變量 a := test//變量就是一個函數(shù)類型的變量fmt.Printf("a的類型是:%T,test函數(shù)的類型是:%T \n",a,test)//a的類型是:func(int),test函數(shù)的類型是:func(int)//通過該變量可以對函數(shù)調(diào)用a(10) //等價于 test(10)//調(diào)用test02函數(shù):test02(10,3.19,test)test02(10,3.19,a) }

【12】為了簡化數(shù)據(jù)類型定義,Go支持自定義數(shù)據(jù)類型
基本語法: type 自定義數(shù)據(jù)類型名 數(shù)據(jù)類型
可以理解為 : 相當(dāng)于起了一個別名
例如:type mylnt int -----》這時mylnt就等價int來使用了.

例如:type mySum func (int , int) int -----》這時mySum就等價一個函數(shù)類型func(int, int) int

【13】支持對函數(shù)返回值命名
傳統(tǒng)寫法要求:返回值和返回值的類型對應(yīng),順序不能錯

升級寫法:對函數(shù)返回值命名,里面順序就無所謂了,順序不用對應(yīng)

總結(jié)

以上是生活随笔為你收集整理的go函数详解:函数定义、形参、返回值定义规范、函数内存分析、不支持重载、支持可变参数、基本数据类型和数组默认都是值传递的、支持自定义数据类型、函数返回值命名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。