欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Go語言變量作用域

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

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

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

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

接下來讓我們具體了解局部變量、全局變量和形式參數(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 語言程序中全局變量與局部變量名稱可以相同,但是函數(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ù)的局部變量來使用。實(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 語言變量作用域的詳細(xì)內(nèi)容,更多關(guān)于Go 語言變量作用域的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang 字符串轉(zhuǎn)time類型實(shí)現(xiàn)

    Golang 字符串轉(zhuǎn)time類型實(shí)現(xiàn)

    本文主要介紹了Golang 字符串轉(zhuǎn)time類型實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Golang利用Recover進(jìn)行錯(cuò)誤處理

    Golang利用Recover進(jìn)行錯(cuò)誤處理

    Golang?中的?recover?是一個(gè)鮮為人知但非常有趣和強(qiáng)大的功能,這篇文章小編就來帶大家深入了解一下在Golang中是如何利用Recover進(jìn)行錯(cuò)誤處理吧
    2023-12-12
  • Golang實(shí)現(xiàn)心跳機(jī)制的示例詳解

    Golang實(shí)現(xiàn)心跳機(jī)制的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Golang實(shí)現(xiàn)心跳機(jī)制的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2024-04-04
  • Go 中閉包的底層原理

    Go 中閉包的底層原理

    這篇文章主要介紹了Go 中閉包的底層原理,閉包的基本原理是一種現(xiàn)象,一個(gè)函數(shù)內(nèi)引用了外部的局部變量的現(xiàn)象,帶著些許的了解和小編一起進(jìn)入文章正題學(xué)習(xí)
    2021-10-10
  • go-cqhttp環(huán)境配置及安裝過程

    go-cqhttp環(huán)境配置及安裝過程

    這篇文章主要介紹了go-cqhttp環(huán)境配置,包括go-cqhttp安裝及簡(jiǎn)單介紹,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • Go語言中通過Lua腳本操作Redis的方法

    Go語言中通過Lua腳本操作Redis的方法

    這篇文章主要給大家介紹了關(guān)于Go語言中通過Lua腳本操作Redis的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • Golang 正則匹配效率詳解

    Golang 正則匹配效率詳解

    這篇文章主要介紹了Golang 正則匹配效率詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Mac OS系統(tǒng)安裝golang教程

    Mac OS系統(tǒng)安裝golang教程

    這篇文章主要介紹了Mac OS系統(tǒng)安裝golang教程,本文還同時(shí)介紹了Sublime Text開發(fā)工具的配置,需要的朋友可以參考下
    2015-01-01
  • golan參數(shù)校驗(yàn)Validator

    golan參數(shù)校驗(yàn)Validator

    這篇文章主要介紹了golan參數(shù)校驗(yàn)Validator,validator包可以通過反射結(jié)構(gòu)體struct的tag進(jìn)行參數(shù)校驗(yàn),下面來看看文章的詳細(xì)介紹吧,需要的朋友也可以參考一下
    2021-12-12
  • 大多數(shù)Go程序員都走過的坑盤點(diǎn)解析

    大多數(shù)Go程序員都走過的坑盤點(diǎn)解析

    這篇文章主要為大家介紹了大多數(shù)Go程序員都走過的坑盤點(diǎn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論