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

一、变量

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

  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
)
发布了16 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zhounixing/article/details/102873707