国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Go 語言變量作用域

這篇具有很好參考價(jià)值的文章主要介紹了Go 語言變量作用域。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、Go 語言變量作用域

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

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

  • 函數(shù)內(nèi)定義的變量稱為局部變量

  • 函數(shù)外定義的變量稱為全局變量

  • 函數(shù)定義中的變量稱為形式參數(shù)

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

1.1 局部變量

在函數(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
	// 結(jié)果: a = 10, b = 20 and c = 30
	fmt.Printf("結(jié)果: a = %d, b = %d and c = %d\n", a, b, c)
}

1.2 全局變量

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

全局變量可以在任何函數(shù)中使用。

// 如何使用全局變量
package main

import "fmt"

/* 聲明全局變量 */
var g int

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

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

package main

import "fmt"

/* 聲明全局變量 */
var g int = 20

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

1.3 形式參數(shù)

形式參數(shù)會(huì)作為函數(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
	// main()函數(shù)中 a = 10
	fmt.Printf("main()函數(shù)中 a = %d\n", a)
	c = sum(a, b)
	// main()函數(shù)中 c = 30
	fmt.Printf("main()函數(shù)中 c = %d\n", c)
}

/* 函數(shù)定義-兩數(shù)相加 */
func sum(a, b int) int {
	// sum() 函數(shù)中 a = 10
	// sum() 函數(shù)中 b = 20
	fmt.Printf("sum() 函數(shù)中 a = %d\n", a)
	fmt.Printf("sum() 函數(shù)中 b = %d\n", b)
	return a + b
}

1.4 初始化局部和全局變量

不同類型的局部和全局變量默認(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
	// main()函數(shù)中 a = 10
	fmt.Printf("main()函數(shù)中 a = %d\n", a)
	c = sum(a, b)
	// main()函數(shù)中 a = 10
	// main()函數(shù)中 c = 31
	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
	// sum() 函數(shù)中 a = 11
	// sum() 函數(shù)中 b = 20
	fmt.Printf("sum() 函數(shù)中 a = %d\n", a)
	fmt.Printf("sum() 函數(shù)中 b = %d\n", b)
	return a + b
}
package main

import "fmt"

func main() {
	var a int = 0
	fmt.Println("for start")
	for a := 0; a < 10; a++ {
		fmt.Println(a)
	}
	fmt.Println("for end")
	fmt.Println(a)
}
# 程序輸出
for start
0
1
2
3
4
5
6
7
8
9
for end
0

在 for 循環(huán)的 initialize(a:=0) 中,此時(shí) initialize 中的 a 與外層的 a 不是同一個(gè)變量,initialize 中的 a 為 for 循

環(huán)中的局部變量,因此在執(zhí)行完 for 循環(huán)后,輸出 a 的值仍然為 0。

package main

import "fmt"

func main() {
	var a int = 0
	fmt.Println("for start")
	for a = 0; a < 10; a++ {
		fmt.Println(a)
	}
	fmt.Println("for end")
	fmt.Println(a)
}
# 程序輸出
for start
0
1
2
3
4
5
6
7
8
9
for end
10

此時(shí) initialize 中的 a 便于外層的 a 為同一個(gè)變量,因此在執(zhí)行完 for 循環(huán)后,輸出 a 的值為 10。

所以大伙們?cè)谑褂?for 循環(huán)的時(shí)候千萬要注意呀。

全局變量可以在整個(gè)包甚至外部包(被導(dǎo)出后)使用。

可通過花括號(hào)來控制變量的作用域,花括號(hào)中的變量是單獨(dú)的作用域,同名變量會(huì)覆蓋外層。文章來源地址http://www.zghlxwxcb.cn/news/detail-493353.html

package main

import "fmt"

func main() {
	a := 5
	{
		a := 3
		fmt.Println("in a = ", a)
	}
	fmt.Println("out a = ", a)
}
# 程序輸出
in a = 3
out a = 5
package main

import "fmt"

func main() {
	a := 5
	{
		fmt.Println("in a = ", a)
	}
	fmt.Println("out a = ", a)
}
# 程序輸出
in a = 5
out a = 5
package main

import "fmt"

func main() {
	a := 5
	{
		a := 3
		fmt.Println("a = ", a)
	}
}
# 程序輸出
a declared and not used

到了這里,關(guān)于Go 語言變量作用域的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • c 語言關(guān)于未聲明變量賦值機(jī)制

    c 語言關(guān)于未聲明變量賦值機(jī)制

    ? 1. 示例代碼: ? 2. 運(yùn)行結(jié)果:

    2024年02月10日
    瀏覽(16)
  • go語言(七)----slice的聲明方式

    go語言(七)----slice的聲明方式

    1、聲明方式一 2、聲明方式二 3、聲明方式三 二、切片容量的追加 1、切片的長(zhǎng)度和容量不同,長(zhǎng)度表示左指針到右指針之間的距離。容量表示左指針到底層數(shù)組末尾的距離。 2、切片的擴(kuò)容機(jī)制,append的時(shí)候,如果長(zhǎng)度增加后超過容量,則將容量增加2倍。 3、切片的截取

    2024年01月21日
    瀏覽(18)
  • SCL語言的數(shù)據(jù)類型和常量與變量聲明方式

    SCL語言的數(shù)據(jù)類型主要包含以下幾類: 1. 基本數(shù)據(jù)類型: - BOOL:布爾類型,取值為TRUE或FALSE。 - INT:整數(shù)類型,取值范圍為-32768~32767(16位PLC)或-2147483648~2147483647(32位PLC)。 - UINT:無符號(hào)整數(shù)類型,取值范圍為0~65535(16位PLC)或0~4294967295(32位PLC)。 - REAL:?jiǎn)尉雀↑c(diǎn)數(shù)

    2024年02月09日
    瀏覽(25)
  • C語言中各變量聲明及注意事項(xiàng)

    在C語言中,變量的聲明語句用于告訴編譯器該變量的類型、名稱以及存儲(chǔ)類型等信息。以下是C語言中常見的變量聲明語句及其使用規(guī)則: 整型(int):用于聲明整數(shù)類型的變量,例如: int num; 浮點(diǎn)型(float):用于聲明單精度浮點(diǎn)數(shù)類型的變量,例如: float pi = 3.14; 字符型

    2024年01月19日
    瀏覽(22)
  • 一、Go基礎(chǔ)知識(shí)2、iota、匿名變量與變量作用域的小細(xì)節(jié)

    1、iota是特殊常量,可以理解為是一個(gè)可被編譯器修改的常量。 2、iota中有一個(gè)計(jì)數(shù)器,會(huì)自動(dòng)加1,自增類型默認(rèn)是int類型。 3、如果中斷了iota則必須顯示恢復(fù)。參考示例二。 4、iota簡(jiǎn)化了const類型的定義。 5、每次出現(xiàn)const的時(shí)候,iota歸零。 示例一: 運(yùn)行結(jié)果: 兩個(gè)const打

    2024年02月05日
    瀏覽(22)
  • 【C語言趣味教程】(4) 變量:代碼注釋 | 變量的聲明 | 初始化與賦值 | 變量的命名 | 關(guān)鍵字 | 標(biāo)識(shí)符 | 變量名的命名規(guī)范

    【C語言趣味教程】(4) 變量:代碼注釋 | 變量的聲明 | 初始化與賦值 | 變量的命名 | 關(guān)鍵字 | 標(biāo)識(shí)符 | 變量名的命名規(guī)范

    ? ?? 《C語言趣味教程》?? 猛戳訂閱?。。?0x00 引入:注釋的作用 \\\"程序員最討厭兩種人:一種是不寫注釋的人,一種是讓我寫注釋的人。\\\" 相信大家對(duì)注釋早已有所耳聞,對(duì)于注釋,C 語言有兩種注釋風(fēng)格,我們下面會(huì)逐個(gè)講解。 ? 但在這之前,我們先來了解了解注釋的作

    2024年02月15日
    瀏覽(105)
  • 【C語言趣味教學(xué)】(6) 作用域:局部變量 | 全局變量 | 局部變量?jī)?yōu)先原則 | 利用大括號(hào)限制作用域 | 變量的生命周期

    【C語言趣味教學(xué)】(6) 作用域:局部變量 | 全局變量 | 局部變量?jī)?yōu)先原則 | 利用大括號(hào)限制作用域 | 變量的生命周期

    ??? ?? 【C語言趣味教程】專欄介紹?? 猛戳了解!??! 0x00 引入:什么是作用域? 變量和常量在程序中都是有作用范圍的,這個(gè)范圍我們稱之為變量的? 作用域 (scope) 。 作用域也稱為 \\\"定義域\\\",是程序中 定義的變量所存在的區(qū)域,出了該區(qū)域變量就不能被訪問。 變量的作

    2024年02月14日
    瀏覽(19)
  • 【C語言趣味教程】(6) 作用域:局部變量 | 全局變量 | 局部變量?jī)?yōu)先原則 | 利用大括號(hào)限制作用域 | 變量的生命周期

    【C語言趣味教程】(6) 作用域:局部變量 | 全局變量 | 局部變量?jī)?yōu)先原則 | 利用大括號(hào)限制作用域 | 變量的生命周期

    ??? ?? 【C語言趣味教程】專欄介紹?? 猛戳了解!?。?0x00 引入:什么是作用域? 變量和常量在程序中都是有作用范圍的,這個(gè)范圍我們稱之為變量的? 作用域 (scope) 。 作用域也稱為 \\\"定義域\\\",是程序中 定義的變量所存在的區(qū)域,出了該區(qū)域變量就不能被訪問。 變量的作

    2024年02月14日
    瀏覽(30)
  • 使用C語言自定義頭文件,聲明的變量或者函數(shù)用extern和不同extern修飾有什么區(qū)別?

    在C語言中,當(dāng)在頭文件中聲明變量或函數(shù)時(shí),使用 extern 和不使用 extern 修飾有以下區(qū)別: 使用 extern 修飾變量: extern 修飾的變量只是聲明,不分配存儲(chǔ)空間。它表示該變量的定義在其他源文件中,需要在使用該變量的源文件中進(jìn)行定義和分配存儲(chǔ)空間。 不使用 extern 修飾的

    2024年02月10日
    瀏覽(21)
  • 【Go語言】Go語言中的變量和常量

    【Go語言】Go語言中的變量和常量

    Go語言中的變量和常量 1 變量 變量相當(dāng)于是對(duì)一塊數(shù)據(jù)存儲(chǔ)空間的命名,程序可以通過定義一個(gè)變量來申請(qǐng)一塊數(shù)據(jù)存儲(chǔ)空間,之后可以通過引用變量名來使用這塊存儲(chǔ)空間。 Go 語言是強(qiáng)類型靜態(tài)語言,所以變量的聲明與賦值方式與 PHP/Python 等動(dòng)態(tài)語言相比有很大的區(qū)別。

    2024年02月21日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包