一道经典的Go语言面视题

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

题目

// 分别开启三个go协程协程中循环输出 gua wang miao

// 在元音字母 a, u, i ,输出总数达到50 个以后停止输出。

解答

`

package main

import (

"fmt"

"sync"

)

const LIMIT int = 50

var count int = LIMIT

var wgFlag sync.WaitGroup

var lock sync.Mutex

func main() {

fmt.Println("Hello, world")

wgFlag.Add(3)

go Bird()

go Dog()

go Cat()

wgFlag.Wait()

fmt.Println("Exit.count=",count)

}

func Bird() {

defer wgFlag.Done()

for true{

lock.Lock()

if count>=2{

fmt.Println("Gua")

count -= 2

lock.Unlock()

} else {

lock.Unlock()

break

}

}

}

func Dog() {

defer wgFlag.Done()

for true{

lock.Lock()

if count>=1{

fmt.Println("Wang")

count -= 1

lock.Unlock()

} else {

lock.Unlock()

break

}

}

}

func Cat() {

defer wgFlag.Done()

for true{

lock.Lock()

if count>=2{

fmt.Println("Miao")

count -= 2

lock.Unlock()

} else {

lock.Unlock()

break

}

}

}

`

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go