佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Golang中的自定義函數(shù)詳解

Golang中的自定義函數(shù)詳解

熱門標簽:鐵路電話系統(tǒng) 服務(wù)外包 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化 AI電銷 Linux服務(wù)器 百度競價排名 呼叫中心市場需求

不管是面向過程的編程,還是面向?qū)ο蟮木幊蹋茧x不開函數(shù)的概念,分別是,參數(shù),函數(shù)名,返回值。接下來我們看看Go語言在這三個方面是做怎么操作的吧。

參數(shù)

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

有參

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

Go語言是強數(shù)據(jù)類型的語言,參數(shù)是要指定類型的不然就報錯。func 是函數(shù)的聲明關(guān)鍵字。

func 函數(shù)名(參數(shù)列表) 返回值類型 {函數(shù)體內(nèi)部}

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

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

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

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

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語言一樣的匿名參數(shù)只做占位的作用,Go語言還不僅如此,還有聲明變量可以占位的功能。

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

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

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函數(shù)多個值了。

Go中的值傳遞,地址傳遞

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

我們用一個交換數(shù)的例子來講解:

值傳遞

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)
}

您可能感興趣的文章:
  • Go語言中函數(shù)的參數(shù)傳遞與調(diào)用的基本方法
  • 深入解析golang編程中函數(shù)的用法
  • Golang 如何實現(xiàn)函數(shù)的任意類型傳參

標簽:黃山 衡水 蘭州 湘潭 崇左 銅川 仙桃 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Golang中的自定義函數(shù)詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    昭苏县| 鞍山市| 德兴市| 塔河县| 逊克县| 淮北市| 青河县| 德钦县| 达州市| 嵊泗县| 涞水县| 玛沁县| 奎屯市| 吉隆县| 宜兰县| 公主岭市| 江北区| 融水| 谢通门县| 军事| 香港 | 合肥市| 棋牌| 陇西县| 靖远县| 田林县| 马龙县| 云梦县| 沽源县| 易门县| 确山县| 北安市| 尼勒克县| 阳新县| 兴城市| 河南省| 舒城县| 房山区| 沈阳市| 临湘市| 阜宁县|