在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ GO/ Go語言作用域規(guī)則
Go panic錯誤處理實例
Go命令行參數(shù)實例
Go可變參數(shù)的函數(shù)實例
Go通道同步實例
Go非阻塞通道操作實例
Go指針實例
Go數(shù)字解析實例
Go語言指針
Go超時(timeouts)實例
Go速率限制實例
Go信號實例
Go Base64編碼實例
Go計時器實例
Go命令行標志實例
Go原子計數(shù)器實例
Go語言切片
Go隨機數(shù)實例
Go語言類型轉(zhuǎn)換
Go排序?qū)嵗?/span>
Go時間格式化/解析實例
Go URL解析實例
Go字符串函數(shù)實例
Go語言常量
Go for循環(huán)語句實例
Go函數(shù)多個返回值實例
Go切片實例
Go行過濾器實例
Go語言接口
Go語言數(shù)組
Go語言變量
Go字符串格式化實例
Go斷續(xù)器實例
Go if/else語句實例
Go通道緩沖實例
Go錯誤實例
Go語言映射
Go執(zhí)行過程實例
Go函數(shù)實例
Go有狀態(tài)的goroutines實例
Go按自定義函數(shù)排序?qū)嵗?/span>
Go語言作用域規(guī)則
Go時代(Epoch)實例
Go變量實例
Go互斥體實例
Go語言范圍(range)
Go程序?qū)嵗?/span>
Go語言入門
Go通道路線實例
Go閉包(匿名函數(shù))實例
Go Select實例
Go通道范圍實例
Go集合函數(shù)實例
Hello World程序?qū)嵗?/span>
Go環(huán)境變量實例
Go語言運算符
Go讀取文件實例
Go延遲(defer)實例
Go SHA1哈希實例
Go語言條件和決策
Go語言錯誤處理
Go通道實例
Go指針實例
Go時間日期實例
Go語言字符串
Go語言循環(huán)
Go語言基礎(chǔ)語法
Go語言開發(fā)環(huán)境安裝配置
Go常量實例
Go語言結(jié)構(gòu)體
Go寫文件實例
Go正則表達式實例
Go JSON實例
Go語言教程
Go關(guān)閉通道實例
Go接口實例
Go語言遞歸
Go switch語句實例
Go函數(shù)遞歸實例
Go退出程序?qū)嵗?/span>
Go語言程序結(jié)構(gòu)
Go范圍實例
Go語言函數(shù)
Go工作池實例
Go語言數(shù)據(jù)類型

Go語言作用域規(guī)則

任何編程中的作用域是程序的一個區(qū)域,它定義了變量可以存在,并且在超出該變量范圍不能被訪問。 在Go編程語言中有三個可以聲明變量的地方:

  1. 在函數(shù)或塊中聲明的為局部變量。
  2. 在所有函數(shù)之外聲明的變量稱為全局變量。
  3. 在定義函數(shù)參數(shù)變量時,稱為形參。

下面來看看什么是局部變量和全局變量,以及什么是形式參數(shù)。

局部變量

在函數(shù)或塊中聲明的變量稱為局部變量。 它們只能由在函數(shù)或代碼塊中的語句使用。局部變量對于它們自己以外的函數(shù)是未知的。以下是使用局部變量的示例。這里所有的變量abc都是main()函數(shù)的局部變量。

package main

import "fmt"

func main() {
   /* local variable declaration */
   var a, b, c int 

   /* actual initialization */
   a = 10
   b = 20
   c = a + b

   fmt.Printf ("value of a = %d, b = %d and c = %d\n", a, b, c)
}

當上述代碼編譯和執(zhí)行時,它產(chǎn)生以下結(jié)果:

value of a = 10, b = 20 and c = 30

全局變量

全局變量在函數(shù)之外定義,通常在程序之上。 全局變量將在程序的整個生命周期中都有保持它的值,并且可以在程序定義的任何函數(shù)內(nèi)訪問到它們。

全局變量可以通過任何函數(shù)訪問。 也就是說,一個全局變量可以聲明后在整個程序中使用。 以下是使用全局變量和局部變量的示例:

package main

import "fmt"

/* global variable declaration */
var g int

func main() {

   /* local variable declaration */
   var a, b int

   /* actual initialization */
   a = 10
   b = 20
   g = a + b

   fmt.Printf("value of a = %d, b = %d and g = %d\n", a, b, g)
}

當上述代碼編譯和執(zhí)行時,它產(chǎn)生以下結(jié)果:

value of a = 10, b = 20 and g = 30

在程序中,局部變量和全局變量的名稱可以相同,但函數(shù)內(nèi)部的局部變量的值將優(yōu)先(也就是說局部變量會覆蓋全局變量)。 以下是一個示例:

package main

import "fmt"

/* global variable declaration */
var g int = 20

func main() {
   /* local variable declaration */
   var g int = 10

   fmt.Printf ("value of g = %d\n",  g)
}

當上述代碼編譯和執(zhí)行時,它產(chǎn)生以下結(jié)果:

value of g = 10

形式參數(shù)

函數(shù)參數(shù) - 形式參數(shù)在函數(shù)中會作為局部變量,它們將優(yōu)先于全局變量。以下是一個示例:

package main

import "fmt"

/* global variable declaration */
var a int = 20;

func main() {
   /* local variable declaration in main function */
   var a int = 10
   var b int = 20
   var c int = 0

   fmt.Printf("value of a in main() = %d\n",  a);
   c = sum( a, b);
   fmt.Printf("value of c in main() = %d\n",  c);
}

/* function to add two integers */
func sum(a, b int) int {
   fmt.Printf("value of a in sum() = %d\n",  a);
   fmt.Printf("value of b in sum() = %d\n",  b);

   return a + b;
}

當上述代碼編譯和執(zhí)行時,它產(chǎn)生以下結(jié)果:

value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30

初始化局部變量和全局變量

當一個局部變量作為全局變量被初始化為它們對應的零值時。指針初始化為nil。

數(shù)據(jù)類型 初始默認值
int 0
float32 0
指針 nil