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

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

熱門標(biāo)簽:中國(guó)地圖標(biāo)注省會(huì)高清 南通如皋申請(qǐng)開通400電話 學(xué)海導(dǎo)航地圖標(biāo)注 地圖標(biāo)注的汽車標(biāo) 西部云谷一期地圖標(biāo)注 浙江高速公路地圖標(biāo)注 江西轉(zhuǎn)化率高的羿智云外呼系統(tǒng) 高德地圖標(biāo)注口訣 廣州呼叫中心外呼系統(tǒng)

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

參數(shù)

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

有參

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

Go語(yǔ)言是強(qiáng)數(shù)據(jù)類型的語(yǔ)言,參數(shù)是要指定類型的不然就報(bào)錯(cuò)。func 是函數(shù)的聲明關(guān)鍵字。

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

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

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

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

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

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

同時(shí)可以給返回值取一個(gè)別名

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兩個(gè)值的。

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

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

其中_是用來(lái)占位的,并不可以使用。
可變參數(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ù)多個(gè)值了。

Go中的值傳遞,地址傳遞

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

我們用一個(gè)交換數(shù)的例子來(lái)講解:

值傳遞

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語(yǔ)言中函數(shù)的參數(shù)傳遞與調(diào)用的基本方法
  • 深入解析golang編程中函數(shù)的用法
  • Golang 如何實(shí)現(xiàn)函數(shù)的任意類型傳參

標(biāo)簽:保定 德宏 吐魯番 常州 許昌 東營(yíng) 貴州 曲靖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Golang中的自定義函數(shù)詳解》,本文關(guān)鍵詞  Golang,中的,自定義,函數(shù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang中的自定義函數(shù)詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Golang中的自定義函數(shù)詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章