刚开始看go的入门教程,看到有 := 这种写法,觉得不是很好,为什么不直接用 = ,其实这两种写法是有差别的。
// = 使用必须使用先var声明例如:
var a
a=100
//或
var b = 100
//或
var c int = 100
// := 是声明并赋值,并且系统自动推断类型,不需要var关键字
d := 100
错误的做法
//声明变量a
var a int
//声明变量a并给变量a赋值
a := 1
//错误提示
no new variables on left side of :=
//说明
重复声明变量a
声明不赋值的初始化值
- 整型和浮点型变量的默认值为 0,如var a int,默认a=0
- 字符串变量的默认值为空字符串
- 布尔型变量默认为 bool
- 切片、函数、指针变量的默认为 nil
使用编译器推导类型
var a=10 //默认a为整型
特殊例子
正确
var conn net.Conn
var err error
conn, err = net.Dial("tcp", "127.0.0.1:8080")
conn, err = net.Dial("tcp", "127.0.0.1:8080")
正确(特殊)
//虽然err重复声明了,但是conn和conn2没有重复声明,只要有一个新声明,不会报错
conn, err := net.Dial("tcp", "127.0.0.1:8080")
conn2, err := net.Dial("tcp", "127.0.0.1:8080")
错误
//重复声明了
conn, err := net.Dial("tcp", "127.0.0.1:8080")
conn, err := net.Dial("tcp", "127.0.0.1:8080")