Go语言学习--变量与常量

Go 是一种开源的程序设计语言,它意在使得人们能够方便地构建简单,可靠,高效的软件。

2. 产生原因

1 计算机硬件技术更新频繁,性能提高很快,目前主流编程语言发展落后,不能合理利用多核CPU优势来提高系统性能

2 软件设计复杂度高,维护成本大

3 C/C++编译速度过慢,需要解决提高速度

3. 语言特点

4. 变量和常量

标识符和关键字

标识符

由字母数字和_(下划线)组成,并且只能由字母和_开头

例如:abc,_,a123

关键字

指编程语言中预先定义好的具有特殊含义的标识符。

Go语言中有25个关键字:

关键字----------------
breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continuefarimportreturnvar
37个保留字
Constants:    true  false  iota  nil

    Types:    int  int8  int16  int32  int64  
              uint  uint8  uint16  uint32  uint64  uintptr
              float32  float64  complex128  complex64
              bool  byte  rune  string  error

Functions:   make  len  cap  new  append  copy  close  delete
             complex  real  imag
             panic  recover

变量

变量声明

Go语言中的非全局变量需要声明后才能使用,同一作用域内不支持重复声明。

声明

Go语言中变量声明必须使用,不使用就编译不过去(因为在Go语言中需要去最大程度的节省空间)

1. 标准声明

var 变量名 变量类型

行尾无需分号

例子:

var s1 string //声明一个保存字符串类型数据的s1变量

2. 批量声明

var ( a string b int c bool d float32 )

3. 变量初始化

每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0;字符串变量的默认值为空字符串;布尔型变量默认为false;

初始化格式:

var 变量名 类型 = 表达式

例子:

var name string = "Q1mi"
var age int = 18

初始化多个变量:

var name, age = "Q1mi", 20

3. 短声明变量

在函数内部使用 := 方式声明并初始化变量

package main

import (
        "fmt"
)
// 全局变量m
var m = 100

func main() {
        n := 10
        m := 200 // 此处声明局部变量m
        fmt.Println(m, n)
}

4. 匿名变量

在使用多重赋值时,如果想要忽略某个值,可使用匿名变量。

匿名变量用一个下划线“_”表示。

例子:

func foo() (int, string) {
        return 10, "Q1mi"
}
func main() {
        x, _ := foo()
        _, y := foo()
        fmt.Println("x=", x)
        fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

注:

函数外的每个语句都必须以关键字开始(var、const、func等)

:=不能使用在函数外。

_多用于占位,表示忽略值。

常量

常量即恒定不变的值,即定义程序运行期间不会改变的值。

声明

1. 标准声明

const 常量名 赋值

常量在定义的时候必须赋值

例子:

const e = 2.7182 //在运行期间e的值不能再发生变化

2. 批量声明

const (
    pi = 3.1415
    e = 2.7182
)

const同时声明多个常量时,如果值与上一行的相同则可以如下定义:

const (
    n1 = 100
    n2
    n3
)
//即n1,n2,n3的值都是100

iota

iota是go语言的常量计数器,只能在常量的表达式中使用。

例子:

const (
                n1 = iota //0
                n2        //1
                n3        //2
                n4        //3
        )

iota在const关键字出现时将被重置为0。const中每新增一行常量声明将会使iota计数一次。

几个面试题的例子:

const (
                n1 = iota //0
                n2        //1
                _
                n4        //3
        )
const (
                n1 = iota //0
                n2 = 100  //100
                n3 = iota //2
                n4        //3
        )
        const n5 = iota //0