Go语言文件的基本结构
package main
// 导入语句
import "fmt"
// 函数外只能放置标识符(变量\常量\函数\类型)的声明
// 程序的入口函数
func main() {
fmt.Prrintln("Hello World!")
}
变量和常量
标识符与关键字
标识符
在变成语言中标识符就是程序员定义的具有特殊意义的此,比如变量名、常量名、函数名等等,Go语言中标识符有字母数字和_
下划线组成,并且只能以字母和_
开头。举几个例子:bcd
,_
,_322
,c231
。
关键字
关键字是指编程语言中预先定义好的具有特殊含义的标识符。关键字和保留字都不建议作为变量名。
Go语言中有25个关键字:
包管理(2个):
import package
程序实体声明与定义(8个):
chan const func interface map struct type var
程序流程控制(15个):
break case continue default defer else fallthrough
for go goto if range return select switch
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
package main
// 声明变量
var name string
var age int
var isOk bool
// 批量声明
var (
name string // ""
age int // 0
isOk bool / false
)
func main() {
name = "Golang"
age = 14
isOk = true
// Go语言中函数内变量声明必须使用,不使用就编译不过去
fmt.Print(isOk) // 在终端中输出要打印的内容
fmt.Printf("name is : %s", name) // %s 占位符,使用name这个变量的值去替换占位符
fmt.Println(age) // 打印完指定的内容后会在后面加一个换行符
// 声明变量同时赋值
var s1 string = "abc123"
fmt.Println(s1)
// 类型推导(根据值判断该变量是什么类型)
var s2 = "1123"
fmt.Println(s2)
// 简短变量声明,只能在函数里面用
s3 := "acc1233"
fmt.Println(s3)
}
匿名变量
在使用多重赋值时,如果想要忽略某个值,可以直接使用匿名变量
。匿名变量用一个下划线_
表示。
例如:
package main
import fmt
func bar() (int, bool) {
return 1, true
}
func main() {
a, _ := bar()
_, b := bar()
fmt.Println("a is ", a)
fmt.Println("b is ", b)
}
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。
注意事项:
- 函数外的每个语句都必须以关键字开始(vat、const、func等)。
:=
不能使用在函数外。_
多用于占位,表示忽略值。
常量
相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。常量的声明和变量的声明非常类似,只是把var
替换成了const
,常量在定义的时候必须赋值。
const pi := 3.1415
const e = 2.7182
声明了pi
和e
这两个常量之后,在整个程序运行期间它们的值都不能再发生变化了。
多个常量也可以一起声明:
const (
pi = 3.1415926
e = 2.7182
)
const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。
const (
n1 = 100
n2
n3
)
n1 n2 n3 的值都是100。
iota
iota
是go语言的常量计数器,只能在常量的表达式中使用。
iota
在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota
计数一次(iota可理解为const语句块中的行索引)。使用iota能简化定义,在定义枚举时很有用。
const (
n1 = iota // 0
n2 // 1
n3 // 2
n4 // 3
)
常见的iota使用
使用_
跳过某些值
const (
b1 = iota // 0
b2 = _ // 1
b3 = iota // 2
b4 = iota // 3
)
插队
const (
c1 = iota // 0
c2 = 100 // 100
c3 = iota // 2
c4 // 3
)
多个常量声明在一行
const (
d1, d2 = iota + 1, iota + 2 // 1, 2
d3, d4 = iota + 3, iota + 4 // 4, 5
)
定义数量级
const (
_ = iota
KB = 1 << (10 * iota)
MB = 1 << (10 * iota)
GB = 1 << (10 * iota)
TB = 1 << (10 * iota)
PB = 1 << (10 * iota)
)