golang:天生支持并发
Go语言文件的基本结构
//开头必须导入包package,如果导入的是main,则可运行为可执行文件
package main
//导入语句
import "fmt"
//函数外只能放标识符(变量、常量,函数,,,)的声明,不能放语句
//程序的入口函数,如果导入的package是main,则必须要有func main()
func main() {
fmt.Println("hello world")
}
运行:在终端输入go build命令,生成 文件名.exe可执行文件,再运行.exe文件
标识符:go语言的标识符与其他语言一样,由字母,数字和下划线组成,并且只能以字母或下划线开头
关键字:go的关键字有25个
go语言中的每一个变量都有自己的类型,并且变量必须经常声明才能使用。
声明变量
Go语言的变量声明格式为:
var 变量名 变量类型
变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号。 举个例子:
//单独声明
var name string
var age int
var isok bool
//批量声明
var (
name string
age int
isok bool
)
变量的初始化
变量初始化的标准格式如下:
var 变量名 类型 = 表达式
//举例
var name string = "Q1mi"
var age int = 18
//或者一次初始化多个变量
var name, age = "Q1mi", 20
【注】:go语言中变量声明后必须使用,全局变量可以不使用
匿名变量
在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:
func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。
注意事项:
- 函数外的每个语句都必须以关键字开始(var、const、func等)
- 不能使用在函数外。
- _多用于占位,表示忽略值。
短变量声明
在函数内部,可以使用更简略的 := 方式声明并初始化变量。
package main
import (
"fmt"
)
// 全局变量m
var m = 100
func main() {
n := 10
m := 200 // 此处声明局部变量m
fmt.Println(m, n)
}
常量
const,常量在定义的时候必须赋值。
const pi = 3.1415
const (
pi = 3.1415
e = 2.7182
)
//const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:
const (
n1 = 100
n2
n3
)
iota
iota是go语言的常量计数器,只能在常量的表达式中使用。
- iota在const关键字出现时将被重置为0。
- const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。
- 使用iota能简化定义,在定义枚举时很有用。
const (
_ = iota
KB = 1 << (10 * iota) //1024
MB = 1 << (10 * iota)
GB = 1 << (10 * iota)
TB = 1 << (10 * iota)
PB = 1 << (10 * iota)
)
多个iota定义在一行
const (
a, b = iota + 1, iota + 2 //1,2
c, d //2,3
e, f //3,4
)
go语言不能定义二进制
func main() {
//十进制
var i1 = 101
fmt.Printf("%d\n", i1) //%d输出十进制
fmt.Printf("%b\n", i1) //%d输出二进制
fmt.Printf("%o\n", i1) //%d输出八进制
fmt.Printf("%x\n", i1) //%d输出十六进制
//八进制,以0开头
i2 := 077
fmt.Printf("%d\n", i2)
//十六进制,以0x开头
i3 := 0x1277
fmt.Printf("%d\n", i3)
//查看变量的类型
fmt.Printf("%T\n", i3)
//查看变量的值
fmt.Printf("%v\n", i3)
}
布尔值
Go语言中以bool类型进行声明布尔型数据,布尔型数据只有true(真)和false(假)两个值。
注意:
- 布尔类型变量的默认值为false。
- Go 语言中不允许将整型强制转换为布尔型.
- 布尔型无法参与数值运算,也无法与其他类型进行转换。