• 
    

      <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
      1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>

        Golang數(shù)據(jù)類型-函數(shù)(六)-創(chuàng)新互聯(lián)

        函數(shù)的定義
        func 函數(shù)名(形參列表) (返回值類型列表) {
        	執(zhí)行語句......
        	return 返回值列表	
        }
        函數(shù)的說明
        1. 形參列表:表示函數(shù)的輸入

          創(chuàng)新互聯(lián)公司長期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為天涯企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè),天涯網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
        2. 函數(shù)中的執(zhí)行語句:表示為了實現(xiàn)某一功能的代碼塊

        3. return:函數(shù)的返回值。函數(shù)可以有返回值,也可以沒有。Go語言函數(shù)支持多個返回值,這一點是其他語言沒有的:(1)如果返回多個值時,在接收時,希望忽略某個返回值,則使用 _ 符號表示占位忽略(2)如果返回值只有一個,(返回值類型) 可以不寫 ()

        4. 函數(shù)的形參列表可以是多個,返回值列表也可以是多個

        5. 形參列表和返回值列表的數(shù)據(jù)類型可以是值類型和引用類型

        6. 函數(shù)的命名遵循標(biāo)識符的命名規(guī)范,首字母不能是數(shù)字,首字母大寫該函數(shù)可以被本包文件和其他包文件使用,首字母小寫,只能被本包文件使用,其它包文件不能使用。

        7. 函數(shù)中的變量是局部的,函數(shù)外不生效

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

        9. 如果希望函數(shù)內(nèi)的變量能修改函數(shù)外的變量,可以傳入變量的地址&,函數(shù)內(nèi)以指針的方式操作變量

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

        11. 函數(shù)既然是一種數(shù)據(jù)類型,因此在Go中函數(shù)可以作為形參,并調(diào)用

        12. 為了簡化數(shù)據(jù)類型定義,Go支持自定義數(shù)據(jù)類型
          基本語法:type 自定義數(shù)據(jù)類型名 數(shù)據(jù)類型 //理解:相當(dāng)于一個別名
          示例:type myInt int //這時myInt就等價int來使用了
          示例:type mySum func (int,int) int //這時mySum就等價于一個函數(shù)類型func (int,int) int

        13. 支持對函數(shù)返回值命名,這個時候return不必指定返回哪個變量了

        package main
        
        import (
        	"fmt"
        )
        func cal(n1 int, n2 int) (sum int, sub int) {sum = n1 + n2
        	sub = n1 - n2
        	return  //這個時候return不必指定返回哪個變量了
        }
        
        func main() {fmt.Println(cal(5, 4))
        }

        1.4 Go支持可變參數(shù)

        //支持0到多個參數(shù)
        func sum(args... int) (sum int) {}
        
        支持1到多個參數(shù)
        func sum(n1 int, args... int) (sum int) {}
        package main
        
        import (
        	"fmt"
        )
        
        //Go可變參數(shù)示例:支持0到多個參數(shù)
        func sum0(args... int) (sum int) {sum = 0
        	//遍歷args
        	for i := 0; i< len(args); i++ {sum += args[i]
        	}
        	return
        }
        
        //Go可變參數(shù)示例:支持1到多個參數(shù)
        func sum1(n1 int,args... int) (sum int) {sum = n1
        	//遍歷args
        	for i := 0; i< len(args); i++ {sum += args[i]
        	}
        	return
        }
        
        func main() {fmt.Println(sum0())  //sum0調(diào)用可以不傳入任何參數(shù)
        	fmt.Println(sum1(10,-1,5,5))  //sum1調(diào)用至少傳入一個參數(shù)
        }
        init函數(shù)

        每一個源文件都可以包含一個init函數(shù),init函數(shù)主要的做用就是完成一些初始化工作,該函數(shù)會在main函數(shù)之前執(zhí)行,被Go運行框架調(diào)用,也就是說init會在main函數(shù)之前被調(diào)用。

        package main
        import "fmt"
        func init(){fmt.Println("init print......")
        }
        func main(){fmt.Println("main print......")
        }

        如果一個文件同時包含全局變量定義、init函數(shù)和main函數(shù),則執(zhí)行流程為:全局變量定義—>init函數(shù)—>main函數(shù)

        匿名函數(shù)

        匿名函數(shù)使用方式1
        在定義匿名函數(shù)時就直接調(diào)用,這種方式匿名函數(shù)只能調(diào)用一次。

        package main
        
        import "fmt"
        
        func main() {res1 := func(n1 int, n2 int) int {return n1 + n2
        	}(10, 20)   //這里的(10, 20)就是直接調(diào)用函數(shù)了
        	fmt.Println("res1 = ", res1)
        }

        匿名函數(shù)使用方式2
        將匿名函數(shù)賦給一個變量(函數(shù)變量),再通過該變量來調(diào)用匿名函數(shù)

        package main
        
        import "fmt"
        
        func main() {a := func(n1 int, n2 int) int {return n1 + n2
        	}
        	res1 := a(10, 20) //這里通過 函數(shù)變量a 來調(diào)用匿名函數(shù)
        	fmt.Println("res1 = ", res1)
        }

        匿名函數(shù)使用方式3:全局匿名函數(shù)
        如果將匿名函數(shù)賦給一個全局變量,那么這個匿名函數(shù),就成為一個全局匿名函數(shù),可以再程序有效。

        package main
        
        import "fmt"
        
        var (
        	Func1 = func(n1 int, n2 int) int {return n1 + n2
        	}
        )
        
        func main() {res1 := Func1(10, 20)
        	fmt.Println("res1 = ", res1)
        }
        函數(shù)的defer

        在函數(shù)種,程序員經(jīng)常需要創(chuàng)建資源(比如:數(shù)據(jù)庫連接、文件句柄、鎖等),為了在函數(shù)執(zhí)行完畢后,及時的釋放資源,Go的設(shè)計者提供defer(延時機制)。
        (1)當(dāng)go執(zhí)行到一個defer時,不會立即執(zhí)行defer后的語句,而是將defer后的語句壓入到一個棧種,然后繼續(xù)執(zhí)行函數(shù)的下一個語句
        (2)當(dāng)函數(shù)執(zhí)行完畢后,再從defer棧中,依次從棧頂取出語句執(zhí)行(注:遵守棧 先入后出的機制)
        (3)在defer將語句放入到棧時,也會將相關(guān)的值拷貝同時入棧
        在這里插入圖片描述

        你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

        分享名稱:Golang數(shù)據(jù)類型-函數(shù)(六)-創(chuàng)新互聯(lián)
        當(dāng)前URL:http://www.jbt999.com/article4/ceogie.html

        成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、營銷型網(wǎng)站建設(shè)、面包屑導(dǎo)航、App設(shè)計、ChatGPT、小程序開發(fā)

        廣告

        聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

        網(wǎng)站優(yōu)化排名

      2. 
        

          <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
          1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>
            国产大奶一区二区 | 国产成人99精品免费视频明星 | 狠狠干综合 | 亚洲精品v | a黄色免费 | 精品亚洲韩国 | 日本本一道久久久久久久 | 91二区三区网站 | 久久精品国产亚洲AV苍井空 | 三级成人网站在线观看 |