Golang 菜鳥教程

Golang 控制語句

Golang 函數(shù) & 方法

Golang 結(jié)構(gòu)體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項(xiàng)

Go 語言函數(shù)參數(shù)

函數(shù)在Golang是用于執(zhí)行特定任務(wù),并將結(jié)果返回給調(diào)用者的語句集合。函數(shù)也可以執(zhí)行某些特定任務(wù)而無需返回任何內(nèi)容。Golang支持兩種將參數(shù)傳遞給函數(shù)的方式,即按值傳遞或按值調(diào)用以及按引用傳遞或按引用傳遞。默認(rèn)情況下,Golang使用按值調(diào)用的方式將參數(shù)傳遞給函數(shù)。

參數(shù)傳遞給函數(shù)的基本術(shù)語:

  • 傳遞給函數(shù)的參數(shù)稱為實(shí)際參數(shù)。

  • 該函數(shù)接收的參數(shù)稱為形式參數(shù)。

按值調(diào)用

在此參數(shù)傳遞中,實(shí)際參數(shù)的值將復(fù)制到函數(shù)的形式參數(shù)中,并且兩種類型的參數(shù)將存儲(chǔ)在不同的存儲(chǔ)位置中。因此,在函數(shù)內(nèi)部進(jìn)行的任何更改都不會(huì)反映在調(diào)用者的實(shí)際參數(shù)中。

示例1:在下面的程序中,您可以看到Z的值不能通過Modify函數(shù)修改。

package main

import "fmt"

// 函數(shù)修改值
func modify(Z int) {
    Z = 70
}

func main() {

    var Z int = 10

    fmt.Printf("函數(shù)調(diào)用前,Z的值為 = %d", Z)

    //按值調(diào)用
    modify(Z)

    fmt.Printf("\n函數(shù)調(diào)用后,Z的值為 = %d", Z)
}

輸出:

函數(shù)調(diào)用前,Z的值為 = 10
函數(shù)調(diào)用后,Z的值為 = 10

示例2:在下面的程序中,交換函數(shù)無法交換值,因?yàn)槲覀冋谑褂冒粗嫡{(diào)用。

package main

import "fmt"

//交換值的函數(shù)
func swap(x, y int) int {

    //取一個(gè)臨時(shí)變量
    var tmp int

    tmp = x
    x = y
    y = tmp

    return tmp
}

func main() {

    var f int = 700
    var s int = 900

    fmt.Printf("函數(shù)調(diào)用前的值\n")
    fmt.Printf("f = %d and s = %d\n", f, s)

    swap(f, s)

    fmt.Printf("\n函數(shù)調(diào)用后的值\n")
    fmt.Printf("f = %d and s = %d", f, s)
}

輸出:

函數(shù)調(diào)用前的值
f = 700 and s = 900

函數(shù)調(diào)用后的值
f = 700 and s = 900

引用調(diào)用

在這里,您將使用Pointers(指針)的概念。解引用運(yùn)算符*用于訪問地址中的值。地址運(yùn)算符&用于獲取任何數(shù)據(jù)類型的變量的地址。實(shí)際參數(shù)和形式參數(shù)都指向相同的位置,因此在函數(shù)內(nèi)部所做的任何更改實(shí)際上都會(huì)反映在調(diào)用者的實(shí)際參數(shù)中。

示例1:在函數(shù)調(diào)用中,我們傳遞變量的地址,并使用解引用運(yùn)算符*修改值。因此,在函數(shù)即Modify之后,您將找到更新后的值。

package main

import "fmt"

// 修改值的函數(shù)
func modifydata(Z *int) {
    *Z = 70
}
func main() {
    var Zz int = 10
    fmt.Printf("函數(shù)調(diào)用前,Zz的值為 = %d", Zz)

    //通過引用調(diào)用傳遞變量Z地址
    modifydata(&Zz)

    fmt.Printf("\n函數(shù)調(diào)用后,Zz的值為 = %d", Zz)
}

輸出:

函數(shù)調(diào)用前,Zz的值為 = 10
函數(shù)調(diào)用后,Zz的值為 = 70

示例2:通過使用按引用調(diào)用,交換函數(shù)將能夠交換值,如下所示。

package main

import "fmt"

//交換值的函數(shù),將指針指向整數(shù)
func swap(x, y *int) int {

    //臨時(shí)存儲(chǔ)變量
    var tmp int

    tmp = *x
    *x = *y
    *y = tmp

    return tmp
}

func main() {

    var f int = 700
    var s int = 900

    fmt.Printf("函數(shù)調(diào)用前的值\n")
    fmt.Printf("f = %d 和 s = %d\n", f, s)

    //通過引用調(diào)用
    //傳遞變量地址
    swap(&f, &s)

    fmt.Printf("\n函數(shù)調(diào)用后的值\n")
    fmt.Printf("f = %d 和 s = %d", f, s)
}

輸出:

函數(shù)調(diào)用前的值
f = 700 和 s = 900

函數(shù)調(diào)用后的值
f = 900 和 s = 700
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清