Go 命令
go build :编译GO程序
go build -o “xx.exe” :编译成xx.exe文件
go run main.go :像执行脚本一样执行main.go文件
go install:先比那一后拷贝
Go 语言文件基础语法
存放Go 源代码的文件后缀名是.go
文件第一行 :package 关键字声明包名
// 单行注释
/*
多行注释
*/
// main 函数是入口函数
//它没有参数也没有返回值
// Go语言函数外的语句必须以关键字开头
1.break break | 用于跳出循环 |
---|---|
2.default | 用于选择结构的默认选项(switch、select) |
3.func | 函数定义 |
4.interface | 定义接口 |
5.select | go语言特有的channel选择结构 |
6.case | 选择结构标签 |
7.chan | 定义channel |
8.const | 常量 |
9.continue | 定义channel |
10.defer | 延迟执行内容(收尾工作)有点类似C++的析构,但是它是再函数结尾的时候去执行(也就是栈即将被释放的时候) |
11.go | 并发执行 |
12.map | map类型 |
13.struct | 定义结构体 |
14.else | 选择结构 |
15.goto | 流程控制 |
16.package | 包 |
17.switch | 选择结构 |
18.fallthrough | 如果case带有fallthrough,程序会继续执行下一条case,不会再判断下一条case的值 |
19.if | 选择结构 |
20.range | 从slice、map等结构中取元素 |
21.type | 定义类型 |
22.for | 循环 |
23.import | 导入包 |
24.return | 返回 |
25.var | 定义变量 |
// 函数内部定义的变量必须使用
func main(){
}
变量
3种声明方式
1. var name1 string
name1 = zf100
2. var name2 = "张三很帅"
3. 函数内部专属:
name3:="沙河小王子"
匿名变量:
当有些数据必须用变量接收但是不使用它是,就可以用”_“来接收
常量
const PI = 3.1415926
const UserNotExistErr = 10000
iota:实现枚举
枚举两个要点
1.在const关键字出现时被重置为0。
2const中每新增一行常量声明将使iota计数累加1
流程控制
if 条件1 {
}
func main(){
//if
var age = 5
if age > 18 {
fmt.Println("成年了")
}else if age >7 {
fmt.Println("该上学了")
}else {
fmt.Println("该吃奶了")
}
}
for 循环
1.标准
for i:=0;i<10;i++{
fmt.Print(i)
}
2 for 2 变种
var i = 0
for ; i<10;i++ {
fmt.pirnt(i)
}
3 for 3变种
var j =0
for j <10 {
fmt.print(j)
j++
}
for 无线循环
for {
fmt.println(“无线循环”)
}
for range
zf := "hello张三是个大帅哥"
fmt.Println(len(zf))
for i, v := range zf {
//fmt.Println(i, v)
fmt.Printf("%d %c\n",i,v)
}
打印 9*9乘法表
for i :=1;i<10;i++{ //第一个循环i
for j :=1;j<=i;j++{ //嵌套循环j
fmt.Printf("%dx%d=%d\t",j, i,j*i) // 打印输出
}
fmt.Println()
}
基本数据类型
整型
无符号整型 uint8 uint16 uint32 uint64
带符号整型 int8 int16 int32 int64
int :具体是32位还是64位看操作系统
uintptr:表示指针
浮点型
float64和float32
Go语言中浮点数默认为是float64
布尔值
true 和false
不能和其他类型做转换
字符串
常用方法,字符串不能修改类型
byte和rune类型
都属于类型别名
字符串 字符 字节都是什么?
字符串: 双引号包裹的是字符串
字符:单个引号包过的都是字符,单个字母,单个符号,单个文字
字节:1byte=8bit
go语言字符串都是UTF8编码,一个常用汉字一般占用3个