好比:函數
test.go 中 咱們定義 了 a 做爲全局變量,那麼在這個程序中任何地方均可以調用a, 這個佈局
var a int = 100
func add(a int, b int) int { var sum int = 0 //sum是局部變量 函數內定義 if a > 0 { var c int = 100
//c是佈局變量,盡在if語句塊有效 語句塊裏面定義 } }
package main import ( "fmt" "zhangyue/res/listen6/可見性" ) func main() { sum := 可見性.Add(100, 200) fmt.Printf("cacl Add return %d\n", sum) // sub := 可見性.sub(200,100) // 報錯 說明 小寫是私有的 只能在包內使用 不能在保外使用 // fmt.Printf("cacl sub return %d\n", sub) fmt.Printf(" cacl A is %d \n", 可見性.A) // fmt.Printf(" cacl a is %d \n", 可見性.a) // 報錯 // 若是想獲得小a 可用下面這種方法 a := 可見性.Test() fmt.Printf(" cacl a is %d \n", a) }
可見性,包內任何變量或函數都是能訪問的。包外的話,首字母大寫是可導出的,可以被其餘包訪問或者調用,小寫表示是私有的,不能被外部包訪問或調用
測試
func add(a int, b int) int { } //add這個函數只能在包內部調⽤,是私有的,不能被外部的包調⽤
代碼 結構spa
可見性/cacl.gocode
package 可見性 // 大寫能被外部的包引用 小寫 說明是私有的 只能在本包裏面被調用 (本包裏面的全部.go均可調用) var a=100 var A = 200 func Add(a, b int) int { return a+b } func sub(a, b int) int { return a - b }
可見性/test.goblog
package 可見性 func Test() int { return a }
可見性測試/test.go生命週期
package main import ( "fmt" "zhangyue/res/listen6/可見性" ) func main() { sum := 可見性.Add(100, 200) fmt.Printf("cacl Add return %d\n", sum) // sub := 可見性.sub(200,100) // 報錯 說明 小寫是私有的 只能在包內使用 不能在保外使用 // fmt.Printf("cacl sub return %d\n", sub) fmt.Printf(" cacl A is %d \n", 可見性.A) // fmt.Printf(" cacl a is %d \n", 可見性.a) // 報錯 // 若是想獲得小a 可用下面這種方法 a := 可見性.Test() fmt.Printf(" cacl a is %d \n", a) }