Go语言基础、实战 -- 1. 变量、类型和常量

mac2026-09-03  4

一、变量

      首先呢,变量是啥意思我就不解释了

  1. 变量的声明及初始化

          Go语言声明变量的方式有很多种形式,比如,可以带var关键字,可以不带;可以单个变量声明,也可以多个变量声明;

      可以给初始值,也可以不给。

var age int //声明不初始化,age=0 var age int = 25 //声明并初始化,age=25 var age = 25 //自动推导类型 var age1, age2 = 25, 23 //多种变量声明 var ( name = "James" //值为James age = 34 //值为34 salary int //值为0 )

      这里有两个Go的语言特性需要注意:

              --变量声明后必须要使用,声明了而不使用,编译会报错(不再赘述)

              --Go会自动为没有初始化的变量赋值,赋值为其对应类型的零值

          因为Go语言的特性,不允许存在没有被初始化的变量,所以如果你声明了变量却没有初始化,那么Go会自动帮你将变量

      初始化为其类型的0值。

          什么是0值?在Go中,每个类型都有一个默认的0值,比如,int的0值是0;bool的0值是false;string的0值是""。而自定义

      类型的0值,则是将自定义类型中每个基础类型的字段初始化为其对应的0值。

 

  2. 速记声明

          Go提供了一种简洁的声明变量的方式,叫速记声明(不再需要写var),方法如下:

no := 23 //自动推导为int name, salary := "James", 4000 //多变量的速记声明,自动推导为string和int

      关于速记声明,需要注意以下几点:

          --只能在函数中使用

          --右边必须要给初始化的值

          --左边必须有一个值是新声明的,如果左边的值全部是之前声明过的变量,则会报错

 

  3. 匿名变量

          Go还提供了另外一种写法,用 '_' 来表示变量,这种就是匿名变量,任何赋予匿名变量的值都会被丢弃。

          匿名变量大多用在接收函数多个返回值时,用来接收不需要的值,或者在循环时用range的时候,用法如下:

func func1() (int, string) { //该函数有两个返回值 return 1, "Go" } func main() { _, language := func1() //当只需要第二个返回值时,可以用 _ 来接收第一个返回值 fmt.Println(language) //打印结果为"Go" }

 

      下面说一下我之前在变量声明上碰到的一个小坑:

package main var ( num int ) func main() { num := 5 // 在此处新声明了变量num,上面全局的num变量会被覆盖掉 }

          -- 如果声明了全局,下面又声明了同名的变量,那么在这个作用域内,全局的变量会被覆盖掉

          -- 在这个作用域外,全局变量还是能够正常使用

 

二、类型

          Go是强类型的语言,所以不同于C++,它没有隐式的类型转换。

          所以用一个类型的值赋值给另一个类型的变量是会出错的,如果有这个需要,请显示地强制转换。

var no int var no_float float32 //no_float = no //Error: 不能给float32类型的变量用int类型赋值 no_float = float32(no) //正确,显示转换

      Go的主要基础类型如下图所示:

      

       主要基础类型及其0值如下:

var var_int int //输出为0 var var_bool bool //输出为false var var_string string //输出为"" var var_float float64 //输出为0 fmt.Printf("[%d] [%v] [%s] [%f]\n", var_int, var_bool, var_string, var_float)

 

三、常量

      1. 字面值常量

      2. 常量声明

          常量声明的语法与普通变量类似,只不过是用const关键字代替var,如下:

const var_const int = 10 const a, b, c = 3, 5, "Gogogo" const ( size int64 = 1024 res = 0.0 ) // var_const = 5 //Error: 不允许对常量进行修改

      3. iota枚举

              iota是常量生成器,它可以用来初始化常量。它可以用在生成一组相似规则生成的常量,只需要在第一行写上就行了。

          在一个const语句中,iota会被初始化为0,然后接下来的每一个变量逐个加1。如下:

const ( NUM_ZERO int = iota // 0 NUM_ONE // 1 NUM_TWO // 2 NUM_THREE // 3 NUM_FOUR // 4 )

 

最新回复(0)