作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。
Go 语言中变量可以在三个地方声明:
函数内定义的变量称为局部变量函数外定义的变量称为全局变量函数定义中的变量称为形式参数
局部变量
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。
全局变量
在函数体外声明的变量称之为全局变量,首字母大写全局变量可以在整个包甚至外部包(被导出后)使用。
package mainimport "fmt"var g intfunc main() { var a, b int a = 10 b = 20 g = a + b fmt.Printf("结果: a = %d, b = %d and g = %dn", a, b, g)}结果
结果: a = 10, b = 20 and g = 30
形式参数
形式参数会作为函数的局部变量来使用
指针作为接收者
若不是以指针作为接收者,实际只是获取了一个copy,而不能真正改变接收者的中的数据
func (b *Box) SetColor(c Color) { b.color = c}示例代码
package mainimport ( "fmt")type Rectangle struct { width, height int}func (r *Rectangle) setVal() { r.height = 20}func main() { p := Rectangle{1, 2} s := p p.setVal() fmt.Println(p.height, s.height)}结果
20 2
如果没有那个*,则值就是2 2



