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

詳解Go語(yǔ)言變量作用域

 更新時(shí)間:2021年03月10日 09:32:39   作者:bainianminguo  
這篇文章主要介紹了Go 語(yǔ)言變量作用域的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用go語(yǔ)言,感興趣的朋友可以了解下

作用域?yàn)橐崖暶鳂?biāo)識(shí)符所表示的常量、類型、變量、函數(shù)或包在源代碼中的作用范圍。

Go 語(yǔ)言中變量可以在三個(gè)地方聲明:

  • 函數(shù)內(nèi)定義的變量稱為局部變量
  • 函數(shù)外定義的變量稱為全局變量
  • 函數(shù)定義中的變量稱為形式參數(shù)

接下來(lái)讓我們具體了解局部變量、全局變量和形式參數(shù)。

局部變量

在函數(shù)體內(nèi)聲明的變量稱之為局部變量,它們的作用域只在函數(shù)體內(nèi),參數(shù)和返回值變量也是局部變量。

以下實(shí)例中 main() 函數(shù)使用了局部變量 a, b, c:

package main
 
import "fmt"
 
func main() {
   /* 聲明局部變量 */
   var a, b, c int
 
   /* 初始化參數(shù) */
   a = 10
   b = 20
   c = a + b
 
   fmt.Printf ("結(jié)果: a = %d, b = %d and c = %d\n", a, b, c)
}

以上實(shí)例執(zhí)行輸出結(jié)果為:

結(jié)果: a = 10, b = 20 and c = 30

全局變量

在函數(shù)體外聲明的變量稱之為全局變量,全局變量可以在整個(gè)包甚至外部包(被導(dǎo)出后)使用。

全局變量可以在任何函數(shù)中使用,以下實(shí)例演示了如何使用全局變量:

package main
 
import "fmt"
 
/* 聲明全局變量 */
var g int
 
func main() {
 
   /* 聲明局部變量 */
   var a, b int
 
   /* 初始化參數(shù) */
   a = 10
   b = 20
   g = a + b
 
   fmt.Printf("結(jié)果: a = %d, b = %d and g = %d\n", a, b, g)
}

以上實(shí)例執(zhí)行輸出結(jié)果為:

結(jié)果: a = 10, b = 20 and g = 30

Go 語(yǔ)言程序中全局變量與局部變量名稱可以相同,但是函數(shù)內(nèi)的局部變量會(huì)被優(yōu)先考慮。實(shí)例如下:

package main
 
import "fmt"
 
/* 聲明全局變量 */
var g int = 20
 
func main() {
   /* 聲明局部變量 */
   var g int = 10
 
   fmt.Printf ("結(jié)果: g = %d\n",  g)
}

以上實(shí)例執(zhí)行輸出結(jié)果為:

結(jié)果: g = 10

形式參數(shù)

形式參數(shù)會(huì)作為函數(shù)的局部變量來(lái)使用。實(shí)例如下:

package main
 
import "fmt"
 
/* 聲明全局變量 */
var a int = 20;
 
func main() {
   /* main 函數(shù)中聲明局部變量 */
   var a int = 10
   var b int = 20
   var c int = 0
 
   fmt.Printf("main()函數(shù)中 a = %d\n",  a);
   c = sum( a, b);
   fmt.Printf("main()函數(shù)中 c = %d\n",  c);
}
 
/* 函數(shù)定義-兩數(shù)相加 */
func sum(a, b int) int {
   fmt.Printf("sum() 函數(shù)中 a = %d\n",  a);
   fmt.Printf("sum() 函數(shù)中 b = %d\n",  b);
 
   return a + b;
}

以上實(shí)例執(zhí)行輸出結(jié)果為:

main()函數(shù)中 a = 10
sum() 函數(shù)中 a = 10
sum() 函數(shù)中 b = 20
main()函數(shù)中 c = 30

初始化局部和全局變量

不同類型的局部和全局變量默認(rèn)值為:

數(shù)據(jù)類型 初始化默認(rèn)值
int 0
float32 0
pointer nil

形參使用,比較 sum 函數(shù)中的 a 和 main 函數(shù)中的 a,sum 函數(shù)中雖然加了 1,但是 main 中還是原值 10:

package main
 
import "fmt"
 
/* 聲明全局變量 */
var a int = 20
 
func main() {
    /* main 函數(shù)中聲明局部變量 */
    var a int = 10
    var b int = 20
    var c int = 0
 
    fmt.Printf("main()函數(shù)中 a = %d\n", a)
    c = sum(a, b)
    fmt.Printf("main()函數(shù)中 a = %d\n", a)
    fmt.Printf("main()函數(shù)中 c = %d\n", c)
}
 
/* 函數(shù)定義-兩數(shù)相加 */
func sum(a, b int) int {
    a = a + 1
    fmt.Printf("sum() 函數(shù)中 a = %d\n", a)
    fmt.Printf("sum() 函數(shù)中 b = %d\n", b)
    return a + b
}

輸出為:

main()函數(shù)中 a = 10
sum() 函數(shù)中 a = 11
sum() 函數(shù)中 b = 20
main()函數(shù)中 a = 10
main()函數(shù)中 c = 31

以上就是詳解Go 語(yǔ)言變量作用域的詳細(xì)內(nèi)容,更多關(guān)于Go 語(yǔ)言變量作用域的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go?json自定義Unmarshal避免判斷nil示例詳解

    Go?json自定義Unmarshal避免判斷nil示例詳解

    這篇文章主要為大家介紹了Go?json自定義Unmarshal避免判斷nil示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go語(yǔ)言中命令行參數(shù)解析工具pflag的使用指南

    Go語(yǔ)言中命令行參數(shù)解析工具pflag的使用指南

    在使用?Go?進(jìn)行開(kāi)發(fā)的過(guò)程中,命令行參數(shù)解析是我們經(jīng)常遇到的需求,于是?Go?社區(qū)中出現(xiàn)了一個(gè)叫?pflag?的第三方包,功能更加全面且足夠強(qiáng)大,下面我們就來(lái)看看它的具體使用吧
    2024-11-11
  • Go prometheus metrics條目自動(dòng)回收與清理方法

    Go prometheus metrics條目自動(dòng)回收與清理方法

    這篇文章主要為大家介紹了Go prometheus metrics條目自動(dòng)回收與清理方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 為什么不建議在go項(xiàng)目中使用init()

    為什么不建議在go項(xiàng)目中使用init()

    這篇文章主要介紹了為什么不建議在go項(xiàng)目中使用init(),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • go使用net/url包來(lái)解析URL提取主機(jī)部分

    go使用net/url包來(lái)解析URL提取主機(jī)部分

    這篇文章主要為大家介紹了go使用net/url包來(lái)解析URL提取主機(jī)部分實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Go語(yǔ)言range關(guān)鍵字循環(huán)時(shí)的坑

    Go語(yǔ)言range關(guān)鍵字循環(huán)時(shí)的坑

    今天小編就為大家分享一篇關(guān)于Go語(yǔ)言range關(guān)鍵字循環(huán)時(shí)的坑,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 詳解Golang中的Mutex并發(fā)原語(yǔ)

    詳解Golang中的Mutex并發(fā)原語(yǔ)

    Mutex?是?Go?語(yǔ)言中互斥鎖的實(shí)現(xiàn),它是一種同步機(jī)制,用于控制多個(gè)?goroutine?之間的并發(fā)訪問(wèn)。本文將著重介紹?Go?的?Mutex?并發(fā)原語(yǔ),希望對(duì)大家有所幫助
    2023-03-03
  • Golang?Template實(shí)現(xiàn)自定義函數(shù)的操作指南

    Golang?Template實(shí)現(xiàn)自定義函數(shù)的操作指南

    這篇文章主要為大家詳細(xì)介紹了Golang如何利用Template實(shí)現(xiàn)自定義函數(shù)的操作,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Go 語(yǔ)言的指針的學(xué)習(xí)筆記

    Go 語(yǔ)言的指針的學(xué)習(xí)筆記

    這篇文章主要介紹了Go 語(yǔ)言的指針的學(xué)習(xí)筆記,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Ruby序列化和持久化存儲(chǔ)(Marshal、Pstore)操作方法詳解

    Ruby序列化和持久化存儲(chǔ)(Marshal、Pstore)操作方法詳解

    這篇文章主要介紹了Ruby序列化和持久化存儲(chǔ)(Marshal、Pstore)操作方法詳解,包括Ruby Marshal序列化,Ruby Pstore存儲(chǔ),需要的朋友可以參考下
    2022-04-04

最新評(píng)論

顺昌县| 申扎县| 海南省| 华宁县| 苍溪县| 湖南省| 八宿县| 鱼台县| 维西| 浦城县| 拉萨市| 辛集市| 衢州市| 思南县| 泸定县| 台北县| 南安市| 澎湖县| 玉田县| 定日县| 吴旗县| 曲麻莱县| 密山市| 和林格尔县| 南川市| 裕民县| 雅江县| 新蔡县| 朝阳市| 雷山县| 宜州市| 浙江省| 精河县| 溆浦县| 文安县| 房山区| 叶城县| 嘉禾县| 长阳| 陇南市| 普宁市|