声明变量一般用var关键字 var identifier type
Go与许多编程语言不同,它在声明变量是把变量类型放在变量名称之后,Golang为什么选择这么做?
- 首先是为了避免像C语言那种含糊不清的声明形式
- 例如 int* a,b;在这个例子中a是指针b不是。如果你想要这两个变量都是指针,则需要将他们分开书写而在Golang中则可以很轻松地把它们都声明为指针
-
var a,b *int
-
其次这种语法能够从左向右的顺序、阅读使代码更容易理解
var a int
var b bool
var str string
//也可以改写成
var(
a int
b bool
str string
)
//这种因式分解的写法一般用于声明全局变量
当一个变量被声明以后,系统会自动赋予它该类型的零值:int为0 ,float为0.0,bool为false,string为"",指针为nil。记住所有内存在Go中都是经过初始化的。
变量命名规则驼峰
但是你的全局变量希望能够被外部包所使用,则需要将首单词的首字母也大写。
自动推断类型
不是什么时候都适用的,如果你想要给变量的值并不是自动推断出的类型,你需要显示指定变量类型
var n int64 =2
!然鹅var a 这种语法是不正确的,因为编译器没有任何可以用于自动推断类型的依据,变量的类型也可以在运行时实现自动推断:
var(
HOME=os.Getenv("HOME")
USER=os.Getenv("USER")
GOROOT=os.Getenv("GOROOT")
)
上面的有var的声明写法主要是用于声明包级别的全局变量,当你在函数体内声明局部变量时,应用简短声明语法:=,例如:
a:=1
这种方法只能用在函数体能不可以用于全局变量的声明与复制
不允许声明但是不使用
但是全局变量var声明的变量允许
//多变量使用
var a,b,c int
a,b,c=5,7,"abc"
a,b,c:=5,7,"abc"
//!如果你想要交换两个变量的值可以简单的使用
a,b=b,a