Go 语言中 = 和 := 有什么区别

刚开始看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")

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注