继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【备战春招】第7天 Go语言语法进阶指南-协程同步&指针

慕仙4468190
关注TA
已关注
手记 7
粉丝 0
获赞 0

课程章节: 并发&指针

课程讲师: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()
    }
}

图片描述

  1. 指针的基本使用
  2. 指针数组和数组指针
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()
}

课程收获:

图片描述

  1. 使用go关键字启动协程
  2. 通常使用最大的协程数减一
  3. 协程间最灵活、最常用的方式是使用channel进行通信,并且可以在接收数据时使用select来随机接收来自多个管道的数据
  4. 可以使用系统提供的工具包:Add()增加一条记录,Done()减少一条记录,Wait()等待记录为0

图片描述

  1. 注意星号使用,声明和取地址符
  2. 没有赋值的指针都是空的
  3. 不支持指针运算
    图片描述
  4. 指针数组:元素是地址,指针指向地址的指针
  5. 数组指针:类型是一个地址,指向数组的指针
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP