- 函数内定义的变量称为局部变量
- 函数外定义的变量称为全局变量
- 函数定义中的变量称为形式参数
局部变量
作用域:函数块内(即花括号内)
易错点:
- for/while/…{}块里声明的变量,其范围仅限于该函数块内
- 上下包含关系和c语言一样
- 平级
- 两个相邻的函数块
- 函数调用是平级调用,但go的变量类型里,分为值类型和引用类型(**这个和c语言不一样**)
- 对于值类型,对其赋值修改不会影响main函数内的同名变量,除非通过指针修改;
- 对于引用类型,是可以进行赋值修改的(但有一篇文章说本质还是值类型的赋值,只是拷贝了,还不懂???)
- 一般数值没变
- 用指针修改变了,指针不支持和整型函数的算术运算,但是支持用指针修改变量值
- 用数组传参,主函数内没变
- 用切片传参,变了
实参 | main函数内 | |
---|---|---|
1 | 一般数值 | 没变 |
2 | 指针 | 变了 |
3 | 数组 | 没变 |
4 | 切片 | 变了 |
全局变量
作用域:全局变量可以在整个包甚至外部包(被导出后)使用。全局变量可以在任何函数中使用