基础语法
变量定义
- : 只能在函数内使用
a, b, c, d := true, false, 3, "hello", "world"
内建变量类型
bool、string
(u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptr
- 整数前面加u就是无符号类型
uintptr
指针(长度也会根据操作系统的位数变化)- go语言没有long
byte、rune
rune
go中的字符型,长度为32,go中没有char
float32、float64、complex64、complex128
- 浮点型
complex64
、complex128
复数
常量与枚举
func enums() {
// 枚举定义
const (
b = 1 << (10 * iota)
kb
mb
gb
tb
pb
)
println(b, kb, mb, gb, tb, pb)
// 1 1024 1048576 1073741824 1099511627776 1125899906842624
}
条件语句
func main() {
const filename = "abc.txt"
contents, err := ioutil.ReadFile(filename)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n", contents)
}
}
func grade(score int) string {
g := ""
switch {
case score < 0 || score > 100:
panic(fmt.Sprintf("Wrong score: %d", score))
case score < 60:
g = "F"
case score < 80:
g = "C"
case score < 90:
g = "B"
case score <= 100:
g = "A"
}
return g
}
func main() {
fmt.Println(grade(0))
fmt.Println(grade(95))
fmt.Println(grade(100))
/*
F
A
A
*/
}
指针
- Go中指针不能运算
- Go语言只有值传递一种方式
- 值传递与引用传递
- 值传递
- 对原本的值做了一份拷贝,拷贝之后不会改变原本的值
- 引用传递
- 不会对原本的值做拷贝,当改动之后也会跟着变化
- 值传递
- Go语言利用值传递时将变量a &(地址) 传递给变量b *(指针),实现a b变量都指向同一个地址,由此实现引用传递。
- 值传递与引用传递
- 范例:将两个变量的值进行交换
Go语言的自定义类型,我们在定义的时候就要考虑它是当做一个指针来用还是值来用。