为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
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()
    }
}

图片描述

  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. 数组指针:类型是一个地址,指向数组的指针
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消