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

詳解Go語言變量作用域

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

作用域為已聲明標(biāo)識符所表示的常量、類型、變量、函數(shù)或包在源代碼中的作用范圍。

Go 語言中變量可以在三個地方聲明:

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

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

局部變量

在函數(shù)體內(nèi)聲明的變量稱之為局部變量,它們的作用域只在函數(shù)體內(nèi),參數(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)
}

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

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

全局變量

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

全局變量可以在任何函數(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)
}

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

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

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

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

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

結(jié)果: g = 10

形式參數(shù)

形式參數(shù)會作為函數(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;
}

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

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

初始化局部和全局變量

不同類型的局部和全局變量默認值為:

數(shù)據(jù)類型 初始化默認值
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 語言變量作用域的詳細內(nèi)容,更多關(guān)于Go 語言變量作用域的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

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

    Go prometheus metrics條目自動回收與清理方法

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

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

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

    go使用net/url包來解析URL提取主機部分

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

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

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

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

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

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

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

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

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

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

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

最新評論

乌拉特前旗| 太和县| 安岳县| 综艺| 伊宁县| 达尔| 喀喇沁旗| 绥滨县| 新邵县| 惠安县| 方正县| 石狮市| 杭锦后旗| 青浦区| 亳州市| 鹤岗市| 华坪县| 当阳市| 崇礼县| 青川县| 西乌珠穆沁旗| 宜兴市| 贡山| 增城市| 二连浩特市| 昌黎县| 宜昌市| 花莲县| 安远县| 留坝县| 遂川县| 赫章县| 深泽县| 肥东县| 阿拉善左旗| 宁都县| 会东县| 西吉县| 新巴尔虎左旗| 岳阳县| 荣昌县|