go fmt
,不用担心空格和tab键的使用go fmt main.go
利用反斜线
实现
//单行注释内容
利用一对反斜线和星号
实现
/*
多行注释内容1
多行注释内容2
*/
25个关键字 + 37个保留字
程序运行过程中的数据都是保存在内存中,通过找到内存地址找到变量,从而找到对应的数据。
GO
是静态类型语言整型、浮点型、布尔型
等var
开头,行尾没有分号var 变量名 变量类型
package main //非注释的第一行:声明当前的文件属于哪个包
import "fmt" //导入fmt包,包含格式化输出的函数
func main() {
//标准声明
var name string
var age int
var isOk bool
fmt.Println(name, age, isOk)
//批量声明
var(
a string
b int
c bool
d float64
)
fmt.Println(a,b,c,d)
//声明变量指定初始值
var name1 string = "xiaowangzi"
var age1 int = 18
var name3, age3 = "Tom", 28
fmt.Println(name1, age1, name3, age3)
//类型推导:系统根据后面的类型自行推导类型;可以在全局中声明
var name2 = "zhangsan"
var age2 = 20
fmt.Println(name2, age2)
//短变量声明:在函数内部声明
m := 10
fmt.Println(m)
//匿名变量:通过下划线_来实现,不占用命名空间,不会分配内存
}
var、const、func
等):=
不能使用在函数外。_
多用于占位,表示忽略值。const
将var
变成const
,常量在定义的时候必须赋值
package main
import "fmt"
//常量
const pi = 3.14
const e = 2.71
//同时设置多个变量
//const (
// pi = 3.14
// e = 2.71
//)
const (
//变量的值相同,可以略写;只能在常量中使用
n1 = 10
n2
n3
)
func main(){
fmt.Println(pi, e, n1, n2, n3)
}
iota
是GO
的常量计数器,只能在常量的表达式中使用。
const
关键字,iota
被重置为0const
中每增加一行常量声明,iota
计数增加一次iota
简化定义,常用于枚举中package main
import "fmt"
//每出现一次iota,计数加1
const (
n1 = iota //0
n2 = iota //1
n3 = iota //2
n4 = iota //3
//使用下划线跳过某些值;值是存在的,但不需要用
_
n6 = iota //5
_
//iota声明中间插队
n8 = 28
)
//重新出现再次归0
const n9 = iota
//定义单位数量级
//其中<<表示左移操作符号,1<<10表示1的二进制左移10位,变成10000000000,也就是十进制的1024
//2<<2:表示2的二进制左移2位,10变成1000,十进制的8
const (
_ = iota //出现const,iota置为0
KB = 1 << (10 * iota) //iota=1,1<<10
MB = 1 << (10 * iota) //iota=2,1<<20
GB = 1 << (10 * iota)
TB = 1 << (10 * iota)
PB = 1 << (10 * iota)
)
const (
a, b = iota + 1, iota + 2 //0+1,0+2
c, d //等价于c, d = iota + 1, iota + 2,结果为1+1,1+2
e, f //2+1, 2+2
)
func main(){
fmt.Println(n1, n2, n3, n4, n6, n8, n9)
fmt.Println(a,b,c,d,e,f)
}
//result
D:\go\src\code\iota>go build
D:\go\src\code\iota>iota.exe
0 1 2 3 5 28 0
1 2 2 3 3 4