最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言中函數(shù)的參數(shù)傳遞與調(diào)用的基本方法

 更新時間:2015年10月30日 15:30:57   投稿:goldensun  
這篇文章主要介紹了Go語言中函數(shù)的參數(shù)傳遞與調(diào)用的基本方法,是golang入門學習中的基礎知識,需要的朋友可以參考下

按值傳遞函數(shù)參數(shù),是拷貝參數(shù)的實際值到函數(shù)的形式參數(shù)的方法調(diào)用。在這種情況下,參數(shù)在函數(shù)內(nèi)變化對參數(shù)不會有影響。

默認情況下,Go編程語言使用調(diào)用通過值的方法來傳遞參數(shù)。在一般情況下,這意味著,在函數(shù)內(nèi)碼不能改變用來調(diào)用所述函數(shù)的參數(shù)??紤]函數(shù)swap()的定義如下。

復制代碼 代碼如下:

/* function definition to swap the values */
func swap(int x, int y) int {
   var temp int

   temp = x /* save the value of x */
   x = y    /* put y into x */
   y = temp /* put temp into y */

   return temp;
}


現(xiàn)在,讓我們通過使實際值作為在以下示例調(diào)用函數(shù)swap():
復制代碼 代碼如下:

 package main

import "fmt"

func main() {
   /* local variable definition */
   var a int = 100
   var b int = 200

   fmt.Printf("Before swap, value of a : %d\n", a )
   fmt.Printf("Before swap, value of b : %d\n", b )

   /* calling a function to swap the values */
   swap(a, b)

   fmt.Printf("After swap, value of a : %d\n", a )
   fmt.Printf("After swap, value of b : %d\n", b )
}
func swap(x, y int) int {
   var temp int

   temp = x /* save the value of x */
   x = y    /* put y into x */
   y = temp /* put temp into y */

   return temp;
}


讓我們把上面的代碼放在一個C文件,編譯并執(zhí)行它,它會產(chǎn)生以下結果:

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :100
After swap, value of b :200

這表明,參數(shù)值沒有被改變,雖然它們已經(jīng)在函數(shù)內(nèi)部改變。

通過傳遞函數(shù)參數(shù),即是拷貝參數(shù)的地址到形式參數(shù)的參考方法調(diào)用。在函數(shù)內(nèi)部,地址是訪問調(diào)用中使用的實際參數(shù)。這意味著,對參數(shù)的更改會影響傳遞的參數(shù)。

要通過引用傳遞的值,參數(shù)的指針被傳遞給函數(shù)就像任何其他的值。所以,相應的,需要聲明函數(shù)的參數(shù)為指針類型如下面的函數(shù)swap(),它的交換兩個整型變量的值指向它的參數(shù)。

復制代碼 代碼如下:

/* function definition to swap the values */
func swap(x *int, y *int) {
   var temp int
   temp = *x    /* save the value at address x */
   *x = *y      /* put y into x */
   *y = temp    /* put temp into y */
}

現(xiàn)在,讓我們調(diào)用函數(shù)swap()通過引用作為在下面的示例中傳遞數(shù)值:
復制代碼 代碼如下:

package main

import "fmt"

func main() {
   /* local variable definition */
   var a int = 100
   var b int= 200

   fmt.Printf("Before swap, value of a : %d\n", a )
   fmt.Printf("Before swap, value of b : %d\n", b )

   /* calling a function to swap the values.
   * &a indicates pointer to a ie. address of variable a and
   * &b indicates pointer to b ie. address of variable b.
   */
   swap(&a, &b)

   fmt.Printf("After swap, value of a : %d\n", a )
   fmt.Printf("After swap, value of b : %d\n", b )
}

func swap(x *int, y *int) {
   var temp int
   temp = *x    /* save the value at address x */
   *x = *y    /* put y into x */
   *y = temp    /* put temp into y */
}


讓我們把上面的代碼放在一個C文件,編譯并執(zhí)行它,它會產(chǎn)生以下結果:

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :200
After swap, value of b :100

這表明變化的功能以及不同于通過值調(diào)用的外部體現(xiàn)的改變不能反映函數(shù)之外。

相關文章

  • Golang實現(xiàn)Biginteger大數(shù)計算實例詳解

    Golang實現(xiàn)Biginteger大數(shù)計算實例詳解

    這篇文章主要為大家介紹了Golang實現(xiàn)Biginteger大數(shù)計算實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 深入學習Golang并發(fā)編程必備利器之sync.Cond類型

    深入學習Golang并發(fā)編程必備利器之sync.Cond類型

    Go?語言的?sync?包提供了一系列同步原語,其中?sync.Cond?就是其中之一。本文將深入探討?sync.Cond?的實現(xiàn)原理和使用方法,幫助大家更好地理解和應用?sync.Cond,需要的可以參考一下
    2023-05-05
  • go?zero微服務實戰(zhàn)系服務拆分

    go?zero微服務實戰(zhàn)系服務拆分

    這篇文章主要為大家介紹了go?zero微服務實戰(zhàn)系服務拆分的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Golang中Channel實戰(zhàn)技巧與一些說明

    Golang中Channel實戰(zhàn)技巧與一些說明

    channel是Go語言內(nèi)建的first-class類型,也是Go語言與眾不同的特性之一,下面這篇文章主要給大家介紹了關于Golang中Channel實戰(zhàn)技巧與一些說明的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • Golang關鍵字select的常用用法總結

    Golang關鍵字select的常用用法總結

    這篇文章主要為大家詳細介紹了golang中select關鍵字的常用用法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-10-10
  • 詳解Golang中select的使用與源碼分析

    詳解Golang中select的使用與源碼分析

    select?是?Go?提供的?IO?多路復用機制,可以用多個?case?同時監(jiān)聽多個?channl?的讀寫狀態(tài)。本文將從源碼角度帶大家了解一下select的使用,需要的可以參考一下
    2022-12-12
  • golang實現(xiàn)簡單rpc調(diào)用過程解析

    golang實現(xiàn)簡單rpc調(diào)用過程解析

    這篇文章主要介紹了golang實現(xiàn)簡單rpc調(diào)用,包括RPC具體實現(xiàn)結合實例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Goland 斷點調(diào)試Debug的操作

    Goland 斷點調(diào)試Debug的操作

    這篇文章主要介紹了Goland 斷點調(diào)試Debug的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go語言指針使用分析與講解

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

    這篇文章主要介紹了Go語言指針使用分析與講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Go語言使用slices包輕松實現(xiàn)排序功能

    Go語言使用slices包輕松實現(xiàn)排序功能

    在 Go 語言開發(fā)中,對數(shù)據(jù)進行排序是常見的需求,Go 1.18 版本引入的 slices包提供了簡潔高效的排序解決方案,支持內(nèi)置類型和用戶自定義類型的排序操作,本文將通過具體示例,詳細介紹如何使用 slices包實現(xiàn)排序及相關功能,需要的朋友可以參考下
    2025-05-05

最新評論

乐亭县| 崇信县| 远安县| 兰溪市| 孟连| 阳春市| 玉环县| 西吉县| 盈江县| 上思县| 苏州市| 柘城县| 锦州市| 清丰县| 威远县| 甘肃省| 汉沽区| 乡宁县| 德兴市| 十堰市| 凤翔县| 育儿| 武清区| 新郑市| 焦作市| 襄城县| 邓州市| 灌云县| 鄂伦春自治旗| 南部县| 广安市| 灵宝市| 新巴尔虎右旗| 绥阳县| 石首市| 五大连池市| 克东县| 屏边| 中超| 祁连县| 邮箱|