golang编程题

1、开启100个协程,顺序打印1-1000,并保证协程号为1的,打印尾数也是1

Go 复制代码
package main

import "fmt"

const (
	routineNum = 100
	numMax     = 1000
)

func main() {
	s := make(chan struct{})
	channels := make(map[int]chan int, 100)
	for i := 1; i <= routineNum; i++ {
		channels[i] = make(chan int)
	}
	for i := 1; i <= routineNum; i++ {
		go func(idx int) {
			for {
				num := <-channels[idx]
				fmt.Printf("chan id:[%d],num:[%d]\n", idx, num)
				s <- struct{}{}
			}

		}(i)
	}

	for j := 1; j <= numMax; j++ {
		idx := j % routineNum //0~99
		if idx == 0 {
			idx = routineNum
		}
		channels[idx] <- j
		<-s
	}
	return
}

2、3个goroutinue交替打印abc10次

Go 复制代码
package main

import (
	"fmt"
	"sync"
)

func main() {
	chan1 := make(chan struct{})
	chan2 := make(chan struct{})
	chan3 := make(chan struct{})
	var wg sync.WaitGroup
	wg.Add(3)

	go func() {
		defer wg.Done()
		for i := 0; i < 10; i++ {
			<-chan1
			fmt.Println("a")
			chan2 <- struct{}{}
		}
		<-chan1
	}()
	go func() {
		defer wg.Done()

		for i := 0; i < 10; i++ {
			<-chan2
			fmt.Println("b")
			chan3 <- struct{}{}
		}

	}()
	go func() {
		defer wg.Done()

		for i := 0; i < 10; i++ {
			<-chan3
			fmt.Println("c")
			chan1 <- struct{}{}
		}
	}()
	chan1 <- struct{}{}
	wg.Wait()

	close(chan1)
	close(chan2)
	close(chan3)
}

3、用不超过10个goroutinue打印不重复的打印slice中100个元素

4、用2个协程交替打印奇偶数

相关推荐
a187927218314 分钟前
【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流
算法·leetcode·二叉树··bfs·算法讲解·树遍历
syagain_zsx29 分钟前
算法基础篇 · 03 枚举(C++ 题解)
c++·算法·二进制·枚举
weixin_307779131 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
2601_966949651 小时前
为什么量化回测中 for 循环比 DataFrame 慢三个数量级?从向量化原理讲起
开发语言·python·pandas·股票数据·quantdash
我是章汕呐2 小时前
地级市能源消耗量及消耗强度数据【2006-2023年】平衡面板
人工智能·经验分享·算法·回归
charliejohn2 小时前
计算机考研 408 数据结构 堆的插入与删除 堆排序
算法
老鱼说AI2 小时前
从点积到希尔伯特空间:向量内积的几何本质与大模型相似度度量
人工智能·深度学习·线性代数·算法·机器学习·数学建模
边境悍匪3 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring
我的xiaodoujiao3 小时前
Django 基础知识详细图文教程 9-Django 模板引擎 2
开发语言·数据库·后端·django
菜鸟~noob2333 小时前
【太空电子战】从CCS到Meadowlands:反通信系统的二十年演进史【含matlab代码】
开发语言·matlab