课程名称:Go 语言语法进阶指南
课程章节: 并发&指针
课程讲师:Gavin
课程内容:
协程同步
package gorotine
import "fmt"
var WG sync.WaitGroup
// 读取数据
func Read() {
for i:=1; i<11; i++ {
WG.Add(1)
}
}
// 写入数据
func Write() {
for i:=1; i<11; i++ {
time.Sleep(time.Second * 2)//睡眠时间两秒
fmt.PrintIn("Done->", i)
WG.Done()
}
}
- 指针的基本使用
- 指针数组和数组指针
package point_demo
import "fmt"
func TesPoint() {
var count int = 20
var countPoint *int
var countPoint1 *int
countPoint = &count
fmt.Printf("count 变量的地址:%x \n", &count)
if countPoint != nil {
fmt.Printf("countPoint 变量存储的地址:%x \n", countPoint)
}
fmt.Printf("countPoint 指针指向地址的值:%d \n", *countPoint)
fmt.Println("countPoint1 变量存储的地址:", countPoint1)
}
func TestPointArr() {
// 指针数组
a,b := 1,2
pointArr := [...]*int{&a,&b}
fmt.Printf("指针数组 pointArr :", pointArr)
// 数组指针
arr := [...]int{3,4,5}
arrPonit := &arr
fmt.Printf("数组指针 arrPonit :", arrPonit)
}
package main
import "fmt"
func main() {
// 测试协程同步
// gorotine.Read() //先在主线程读取文件
// go gorotine.Write() //写入的协程
// gorotine.WG.Wait() //等待写完
// fmt.PrintIn("All done !")
// time.Sleep(time.Second * 60)
// 测试指针
// point_demo.TesPoint()
point_demo.TestPointArr()
}
课程收获:
- 使用go关键字启动协程
- 通常使用最大的协程数减一
- 协程间最灵活、最常用的方式是使用channel进行通信,并且可以在接收数据时使用select来随机接收来自多个管道的数据
- 可以使用系统提供的工具包:Add()增加一条记录,Done()减少一条记录,Wait()等待记录为0
- 注意星号使用,声明和取地址符
- 没有赋值的指针都是空的
- 不支持指针运算
- 指针数组:元素是地址,指针指向地址的指针
- 数组指针:类型是一个地址,指向数组的指针
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦