真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

GO之函數(shù)操作-創(chuàng)新互聯(lián)

函數(shù)function

站在用戶的角度思考問題,與客戶深入溝通,找到咸陽網(wǎng)站設(shè)計(jì)與咸陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋咸陽地區(qū)。

-Go函數(shù)不支持嵌套、重載、和默認(rèn)參數(shù)

-支持以下特性:

-無需聲明原型、不定長度變參、多返回值、命名返回值參數(shù)、匿名函數(shù)、閉包

-定義函數(shù)使用關(guān)鍵字func,且最左括號(hào)不能另起一行

-函數(shù)也可以作為一種類型使用

#func 函數(shù)名(參數(shù)列表,可為空)(設(shè)置可返回值類型,作為可選部分){}

func A1(a int,b string)(int,string){} //定義返回的類型

func A2(a ,b,c int)(int,string){}     //定義函數(shù)值都為int類型

func A3(a int,b string)(int,string){}

##有命名返回值和不命名返回值區(qū)別:

定義多個(gè)參數(shù):可用不定常變參

func main(){

A(1,2,3,4,5,6)

}

func A(a...int){

fmt.Println(a)

}

值類型傳遞和SLICE傳遞區(qū)別:

##函數(shù)調(diào)用:

package main
import "fmt"
func max(num1 int, num2 int) int {
    var result int
    if num1 > num2 {
        result = num1
    } else {
        result = num2
    }
    return result
}
func main() {
    var a int = 100
    var b int = 200
    var ret int
    ret = max(a, b)
    fmt.Printf("大值是:%d\n", ret)
}

函數(shù)定義時(shí)指出,函數(shù)定義時(shí)有參數(shù),該變量可稱為函數(shù)的形參。形參就像定義在函數(shù)體內(nèi)的局部變量。
但當(dāng)調(diào)用函數(shù),傳遞過來的變量就是函數(shù)的實(shí)參,函數(shù)可以通過兩種方式來傳遞參數(shù):

  1. 值傳遞:指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)復(fù)制一份傳遞到函數(shù)中,這樣在函數(shù)中如果對(duì)參數(shù)進(jìn)行修改,將不會(huì)影響到實(shí)際參數(shù)。

2.   引用傳遞:是指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)的地址傳遞到函數(shù)中,那么在函數(shù)中對(duì)參數(shù)所進(jìn)行的修改,將影響到實(shí)際參數(shù)

不定參數(shù)類型:

func myfunc(args ...int){}

egg:

package main
import "fmt"
func main() {
    //var a int = 100
    //var b int = 200
    myfunc(100, 200, 300, 400, 500)
}
func myfunc(args ...int) {
    fmt.Println(args)
    for _, arg := range args {
        fmt.Println(arg)
    }
}

匿名函數(shù):

在Go里面,函數(shù)可以像普通變量一樣被傳遞或使用,Go語言支持隨時(shí)在代碼里定義匿名函數(shù),匿名函數(shù)由一個(gè)不帶函數(shù)名的函數(shù)聲明和函數(shù)體組成。匿名函數(shù)的優(yōu)越性在于可以直接使用函數(shù)內(nèi)的變量,不必申明。

func main(){

a :=func(){ //函數(shù)里沒有名字

fmt.Println("FUNC A")

}

a()

}

func A(){

fmt.Println("FUNC A")

}

閉包:閉包是由函數(shù)及其相關(guān)引用環(huán)境組合而成的實(shí)體(即:閉包=函數(shù)+引用環(huán)境)

func main(){

a :=clousre(10){

fmt.Println(func(1))

fmt.Println(func(2))

}

}

func clousre(x int)func(int)int{

return func(y int)int{

return x+y

}

fmt.Println("FUNC A")

}

defer:(調(diào)用:先進(jìn)后出,后進(jìn)先出原則)

-執(zhí)行方式類似其他語言中的析構(gòu)函數(shù),在函數(shù)體執(zhí)行結(jié)束后按照調(diào)用順序的相反順序逐個(gè)執(zhí)行

-即使函數(shù)發(fā)生嚴(yán)重錯(cuò)誤也會(huì)執(zhí)行

-支持匿名函數(shù)的調(diào)用

-常用于資源清理、文件關(guān)閉、鎖解以及記錄時(shí)間等操作

-通過與匿名函數(shù)配合可在return之后修改函數(shù)計(jì)算結(jié)果

-如果函數(shù)體內(nèi)某個(gè)變量作為defer時(shí)匿名函數(shù)的參數(shù),則在定義defer時(shí)即以獲得了拷貝,否則則是引用某個(gè)變量的地址

-Go沒有異常機(jī)制,但有panic/recover模式來處理錯(cuò)誤

-Panic可以在任何地方引發(fā),但recover只有在defer調(diào)用的函數(shù)中有效

func main(){

for i :=0;i<3;i++{

defer fmt.Println(i)

}

}

func main(){

for i :=0;i<3;i++{

defer func(){

fmt.Println(i)}()

}

}

##recover案例

package main

import "fmt"

func main() {

A()

B()

C()

}

func A() {

fmt.Println("func A")

}

func B() {

defer func() {

if err := recover(); err != nil {

fmt.Println("Recover in B")

}

}()

panic("func B") //如果只有這條,執(zhí)行到這就停止了

}

func C() {

fmt.Println("func C")

}

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。


名稱欄目:GO之函數(shù)操作-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://weahome.cn/article/ghsgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部