0Go开发注意事项
1. Go源文件以.go为扩展名
2. Go应用程序的执行入口是main()方法
3. Go语言严格区分大小写
4. Go方法由语句构成,每个语句后可以不加分号(Go语言会在每行后自动添加)
5. Go编译器是逐行翻译的。因此,不能将多条语句写在同一行
6. Go语言定义的变量或import的包如果没有用到,编译就不能通过
1Go基础知识
1.1变量
Go语言中变量的声明有以下形式:
·var 变量名 数据类型
eg.
var i int
i = 1 //若声明后不赋值,使用默认值
·var 变量名 = 值
eg.
var i = 1
·变量名 := 值
eg.
i := 1
1.1.1常量
使用const修饰的变量称为常量
eg.
const c int = 1
const c = 1
·常量必须在声明时即赋值,赋值后不能更改;
·常量只能修饰bool、数值类型、string类型
·在 Go 语言中,不要求常量首字母大写。首字母的大小写是决定标识符的访问范围。
1.2数据类型
1.2.1基本数据类型
·数值型
·整数类型(默认值是0)
·(有符号整数)int,int8,int16,int32,int64
·(无符号整数)uint,uint8,uint16,uint32,uint64
·rune
·byte
·浮点类型(默认值是0)
·float32,float64
·字符型
Go没有专门的字符型,使用byte保存单个字符
·布尔类型(默认值是false)
布尔类型只允许取 true 或 false
·bool
·字符串(默认值是空串””)
·string
2种表示形式
·“双引号包含字符串”
此时会识别转义字符
·’反引号包含字符串’
此时将以字符串的原生形式输出,包含换行和特殊字符
1.2.2复杂数据类型
·指针(Pointer)
·数组
·结构体(struct)
·管道(Channel)
·函数
·切片(slice)
·接口(interface)
·map
2程序流程控制
2.1if
·if
eg.
if 8%4 == 0 {
fmt.Println("8 is divisible by 4")
}
在Go中,条件表达式不能加括号,且语句块即使只有一句也必须加上大括号
·if...else
eg.
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
在Go中,不能让else语句另起一行
·if...else if
eg.
if num := 9; num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
2.2switch
eg.
a := 2
switch a {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
case 4, 5:
fmt.Println("four or five")
default:
fmt.Println("other")
}
·case后可以是一个表达式(常量、变量、有返回值的函数)
·case后不需要加break
·switch后面可以不带表达式,此时case表达式数据类型是bool。类似于多个 if...else分支使用
eg.
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
2.3for
·for 循环变量初始化; 循环条件; 循环变量迭代 {
...
}
eg.
for j := 7; j < 9; j++ {
fmt.Println(j)
}
·for-range
GoLang提供for-range方式遍历字符串和数组
eg.
var str string = "abcdefg"
for index, val := range str { // index 即下标,val 即值。使用 _ 忽略其中的一个
fmt.Printf("%d\t%c\n", index, val)
}
2.4break
用于中止一个语句块的执行。用于中断当前for循环或跳出swiitch语句
·break默认跳出最近的循环
·break语句出现在多层嵌套语句块中时,能通过标签指明要终止哪里一层语句块
eg.
lable1: // 标签
for{
for{
if ... {
break lable1
} else{
break
}
}
}
2.5continue
在循环中出现。用于结束本次循环,继续下一次循环
·continue默认跳过最近的循环
·continue语句出现在多层嵌套语句块中时,能通过标签指明要跳过哪一层循环