Go语言学习之:=与=的区别|Go主题月

1,783 阅读3分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了Go语言学习之力扣-移除元素|Go主题月

  • 移除元素

本篇内容将继续带领大家走进Go语言的世界。

1.本文简介

Go语言学习之:==的区别。

在Go语言中:==这两个符号我们经常看见,初学者也常常把这两个符号混淆。

下面我们就来谈谈这两个符号的区别。

2.定义上的区别

  • =是赋值语句,但是此处的变量必须提前声明好类型,或者在声明的同时赋值
  • :=是声明类型并赋值,自动匹配变量类型,省去了声明变量类型操作,也就是你可以不声明,在赋值使用的时候多加个冒号就可以了。

3.使用上的区别

1.=要和关键字var一起使用。

  • var可以在函数中使用,也可以在函数外使用。
  • :=只能在函数中使用,所以只能定义局部变量。
var a = 3       // 可以省略类型
var b int = 5  // 与关键词var使用时候的完整形式
c := 3         // 直接声明类型并赋值

例如下面案例所示:

package main

import "fmt"

func main(){
   var a=3           // 可以省略类型
   var b int =4      // 与关键词var使用时候的完整形式
   c:=5              // 直接声明类型并赋值
   fmt.Printf("a的值为:%v\n",a)
   fmt.Printf("b的值为:%v\n",b)
   fmt.Printf("c的值为:%v",c)
}

输出为:

image.png

2.用var定义,=赋值之后,还可以改变。但是用:=定义的变量不能改变值。

c :=5
c :=6//提示错误,不能声明类型后,再声明类型
c = 5//正常

例如下面案例所示:

package main

import "fmt"

func main(){
   var a=3           // 可以省略类型
   var b int =4      // 与关键词var使用时候的完整形式
   c:=5              // 直接声明类型并赋值
   c:=6
   fmt.Printf("a的值为:%v\n",a)
   fmt.Printf("b的值为:%v\n",b)
   fmt.Printf("c的值为:%v",c)
}

输出为:

image.png

上述案例中:=定义的变量c,不能声明类型后,再声明类型

正确的用法如下:

:=定义的变量c,若想再对c重新赋值,可以使用=

package main

import "fmt"

func main(){
   var a=3           // 可以省略类型
   var b int =4      // 与关键词var使用时候的完整形式
   c:=5              // 直接声明类型并赋值
   c =6
   fmt.Printf("a的值为:%v\n",a)
   fmt.Printf("b的值为:%v\n",b)
   fmt.Printf("c的值为:%v",c)
}

输出为:

image.png

3.var=可以平行定义并赋值

例如案例一案例二所示:

案例一声明变量时省略类型:

package main

import (
   "fmt"
   "reflect"
)

func main(){
   var a,b=3,4.5           // 可以省略类型

   fmt.Printf("a的类型为%v,值为:%v\n",reflect.TypeOf(a),a)
   fmt.Printf("b的类型为%v,值为:%v\n",reflect.TypeOf(b),b)

}

输出为:

image.png

案例二声明变量时不省类型:

package main

import (
   "fmt"
   "reflect"
)

func main(){
   var a,b float32=3,4.5           // 可以省略类型

   fmt.Printf("a的类型为%v,值为:%v\n",reflect.TypeOf(a),a)
   fmt.Printf("b的类型为%v,值为:%v\n",reflect.TypeOf(b),b)

}

输出为:

image.png

:=也可以这样做

例如下面的案例所示:

package main

import (
   "fmt"
   "reflect"
)

func main(){
   a,b :=3,4.5           // 可以省略类型

   fmt.Printf("a的类型为%v,值为:%v\n",reflect.TypeOf(a),a)
   fmt.Printf("b的类型为%v,值为:%v\n",reflect.TypeOf(b),b)

}

输出为:

image.png

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。