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

1. 定义

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

2. 产生原因

1 计算机硬件技术更新频繁,性能提高很快,目前主流编程语言发展落后,不能合理利用多核CPU优势来提高系统性能
2 软件设计复杂度高,维护成本大
3 C/C++编译速度过慢,需要解决提高速度

3. 语言特点

4. 变量和常量

标识符和关键字

标识符

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

关键字

指编程语言中预先定义好的具有特殊含义的标识符。
Go语言中有25个关键字:

关键字 ---- ---- ---- ----
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue far import return var

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
上一篇:异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.


下一篇:如何在python中使用SPARQLWrapper处理参数化查询中的字符串