亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Golang中的自定義函數詳解

 更新時間:2018年10月07日 09:50:28   作者:_AlphaBaby_  
函數構成代碼執(zhí)行的邏輯結構。在Go語言中,函數的基本組成為:關鍵字func、函數名、參數列表、返回值、函數體和返回語句。

不管是面向過程的編程,還是面向對象的編程,都離不開函數的概念,分別是,參數,函數名,返回值。接下來我們看看Go語言在這三個方面是做怎么操作的吧。

參數

談到參數,我們在寫函數或者是類中的方法的時候都需要考慮我們應該傳遞怎樣的參數,或者是是否需要參數。
參數首先分為無參函數有參。無參也就是沒有參數,也就不用寫了。

有參

func functionTest() {  # 小括號內就是用來放參數的
    # 函數體內
}

Go語言是強數據類型的語言,參數是要指定類型的不然就報錯。func 是函數的聲明關鍵字。

func 函數名(參數列表) 返回值類型 {函數體內部}

func addTwoNumber(a int, b int) int {
    return a + b
}

我們這里寫了一個很簡單的函數,把兩個數相加并返回結果
這里我們要注意,參數的類型是寫在參數名的后面,和變量定義是一樣的。

func addTwoNumber(a int, b int)  (sum int) {
    return a+b
}

返回值的定義,是可以給返回值取一個名稱的,還有一點是和其他的編程語言不一樣的是在Go語言中函數的返回值可以有多個的。

func addTwoNumber(a int, b int)  (int, int) {
    return a+b, a-b
}

同時可以給返回值取一個別名

func addTwoNumber(a int, b int)  (sum, dif int) {
    return a+b, a-b
}

像這樣給返回值取完名字后可以給返回值直接賦值

func addTwoNumber(a int, b int)  (sum, dif int) {
    sum = a+b
    dif = a-b
    return
}

同樣這樣也是可以直接返回sum,和dif兩個值的。

同時Go語言也具有和c語言一樣的匿名參數只做占位的作用,Go語言還不僅如此,還有聲明變量可以占位的功能。

func addTwoNumber(int, b int)  (int, int) {
    return b, b
}
func main() {
    a, _, c := 1, 2, 3
    fmt.Println(a, c)
}

其中_是用來占位的,并不可以使用。
可變參數列表

func sum(numbers ...int) int {
    s := 0
    for i := range numbers{
        s += i
    }
    return s
}
func main() {
    fmt.Println(sum(1,2,3,4,5))
}

像這樣我們就可以傳給sum函數多個值了。

Go中的值傳遞,地址傳遞

在很多語言中,在調用函數或者是方法的時候,都是要考慮我們是傳遞值還是傳遞地址(在某些語言中敘述的是傳遞引用),到底是傳遞值還是傳遞地址這一概念是非常重要的,我們應該弄清楚。

我們用一個交換數的例子來講解:

值傳遞

package main

import "fmt"

func swap(x, y int) {
    var temp = x
    x = y
    y = temp
}
func main() {
    a,b := 1,2
    swap(a,b)
    fmt.Println(a, b)
}


地址傳遞

package main

import "fmt"

func swap(a, b *int) {
    var temp = *a
    *a = *b
    *b = temp
}
func main() {
    a,b := 1,2
    swap(&a,&b)
    fmt.Println(a, b)
}

相關文章

  • 淺談beego默認處理靜態(tài)文件性能低下的問題

    淺談beego默認處理靜態(tài)文件性能低下的問題

    下面小編就為大家?guī)硪黄獪\談beego默認處理靜態(tài)文件性能低下的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • golang交叉編譯詳細

    golang交叉編譯詳細

    Golang 支持交叉編譯,在一個平臺上生成另一個平臺的可執(zhí)行程序,只需要按照我下面的這個環(huán)境變量表設置對應的環(huán)境變量就可以了,下面文章將對該內容做詳細介紹,感興趣的小伙伴可以參考一下
    2021-10-10
  • Golang并發(fā)控制的三種實現方法

    Golang并發(fā)控制的三種實現方法

    在Golang中,有多種方式可以進行并發(fā)控制,本文詳細的介紹了三種實現方法,Channel優(yōu)點是實現簡單,清晰易懂,WaitGroup優(yōu)點是子協程個數動態(tài)可調整,Context 優(yōu)點是對子協程派生出來的孫子協程的控制,缺點是相對而言的,要結合實例應用場景進行選擇
    2023-08-08
  • Golang讀寫Excel的方法教程

    Golang讀寫Excel的方法教程

    這篇文章主要給大家介紹了關于Golang讀寫Excel的方法教程,golang操作excel利用的是Excelize,Excelize是Golang編寫的一個用來操作 Office Excel 文檔類庫,基于微軟的Office OpenXML標準,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • 一文帶你掌握Go語言運算符的使用

    一文帶你掌握Go語言運算符的使用

    運算符用于在程序運行時執(zhí)行數學或邏輯運算。Go 語言內置的運算符有:算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符、其他運算符。本文將帶大家詳細了解一下這些運算符的使用,感興趣的可以了解一下
    2022-04-04
  • Go語言指針使用分析與講解

    Go語言指針使用分析與講解

    這篇文章主要介紹了Go語言指針使用分析與講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • 使用go在mangodb中進行CRUD操作

    使用go在mangodb中進行CRUD操作

    這篇文章主要介紹了使用go在mangodb中進行CRUD操作,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 利用GO語言實現多人聊天室實例教程

    利用GO語言實現多人聊天室實例教程

    聊天室的實現大家應該都遇到過,這篇文章主要給大家介紹了關于利用GO語言實現多人聊天室的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2018-03-03
  • Golang import本地包和導入問題相關詳解

    Golang import本地包和導入問題相關詳解

    這篇文章主要介紹了Golang import本地包和導入問題相關詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • Golang利用Recover進行錯誤處理

    Golang利用Recover進行錯誤處理

    Golang?中的?recover?是一個鮮為人知但非常有趣和強大的功能,這篇文章小編就來帶大家深入了解一下在Golang中是如何利用Recover進行錯誤處理吧
    2023-12-12

最新評論