go
一、go类型
1.布尔型
布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
2.数字类型
整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
3.字符串类型:
字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
4.派生类型:
包括:
(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型
二、变量和常量
var s string = "test"
m := "test2"
const LENGTH int = 10 #常量
三、函数
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("1111", "22222")
fmt.Println(a, b)
}
四、数组
var balance [10] float32
长度为10的数组
var balance = [...]int{1, 2, 3}
根据元素个数确定长度的数组
不定长数组 make([]int,3,5)
初始长度为3最大长度为5的数组
range
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
for i, v := range pow {
fmt.Printf("2**%d = %d\n", i, v)
}
五、结构体
type P struct {
name string
age int
}
fmt.Println(P{"G", 1})
fmt.Println(P{name: "G", age: 1})
var p P
p.name = 'G'
print(p.name)
接口
type Phone interface { call() } type Phone1 struct { } func (p Phone1) call() { fmt.Println("aaaaa") } type Phone2 struct { } func (p2 Phone2) call() { fmt.Println("bbbbbbb") } func main() { var phone Phone phone = new(Phone1) phone.call() phone = new(Phone2) phone.call() }
六、并发
go f(x, y, z)
通道
ch := make(chan int)
发送
ch <- sum
接收
sum <- ch
v, ok := <-ch
ok表示通道是否关闭
m sync.Mutex 互斥锁
import ( "fmt" "sync" ) var wg sync.WaitGroup func hello() { fmt.Println("aaa") defer wg.Done() } func main() { wg.Add(1) go hello() fmt.Println("欢迎来到编程狮") wg.Wait()//阻塞代码的运行,直到计算器为0 }