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