文章目录1. 前言:2. go的下载与配置3. Golang 目录结构4. Golang 的基础语法4.1. 变量声明4.2. 输入输出4.3. 条件控制4.4. 数组和切片4.5. 映射表 1. 前言:根据鼠鼠的实习投递经历,由于越来越多中大型公司都使用 Golang,在现在这个越来越内卷的后端就业环境下,学习一下 Golang 拓宽技术栈面是必须的,下面就跟着鼠鼠进行一些基础知识点的比较和学
package mainimport ( "fmt" "time")func main() { // 定义一个channel c := make(chan int, 3) fmt.Println("len(c) = ", len(c), ", cap(c) = ", cap(c)) go func() { defer fmt.Println("子go程结束") for i := 1; i < 4; i++ { c <- i fmt.Println("子.
原创 2021-03-27 21:26:56
72阅读
Golang阻塞的管道 疑惑: 对于处理不完任务的管道,剩下的任务是不是按照顺序处理的? 测试思路 生产者每 3 毫秒生产一条 消费者每秒消费一条 观察数据打印 如果数据是递增的,就是队列 不是递增的,那就是内部实现的是锁的竞争 代码 package main import ( "log" "tim ...
转载 2021-07-19 22:47:00
215阅读
2评论
package mainimport ( "fmt")func main() { c := make(chan int) go func() { for i := 0; i < 5; i++ { c <- i } // 关闭channel close(c) }() for { if data, ok := <-c; ok { fmt.Println(data) } else { break } } fmt.Print.
原创 2021-03-27 21:40:14
65阅读
package mainimport ( "fmt" "time")func main() { // 定义一个channel c := make(chan int, 3) fmt.Println("len(c) = ", len(c), ", cap(c) = ", cap(c)) go func() { defer fmt.Println("子go程结束") for i := 1; i < 4; i++ { c <- i fmt.Println("子.
原创 2021-03-27 21:26:56
152阅读
package mainimport ( "fmt")func main() { c := make(chan int) go func() { for i := 0; i < 5; i++ { c <- i } // 关闭channel close(c) }() for { if data, ok := <-c; ok { fmt.Println(data) } else { break } } fmt.Print.
原创 2021-03-27 21:40:14
201阅读
介绍 Golang 通道(channel)本文介绍如何使用Golang通道。通道是Go应用中链接协程通信的管道,协程可以往通道中推入值或从中读取值。利用通道可以非常方便地实现高性能、高并发应用,相比与其他语言更简单,这并不是巧合,而是Go语言的设计理念————并发作为语言的一等公民,使得并发应用尽可能简单而不失灵活性。通道的思想起始很早就有了,但Go的实现者希望通道承担更多使命————以尽可能简单
为什么需要channelchannel的介绍管道的本质是队列 FIFO 先进先出定义/声明管道channel的初始化和写数据 管道的本质 向管道写入数据及查看管道的长度和容量 往管道加数据,不能超过它的容量,否则报错从管道中读取数据 管道为空的情况下继续取数据会报错...
go
原创 2021-07-06 09:45:46
931阅读
为什么需要channelchannel的介绍管道的本质是队列 FIFO 先进先出定义/声明管
原创 2022-01-19 14:27:23
335阅读
死锁编译器底层会分析,如果发现一个地方在不停的写,但是没有任何一个协程去读取这样就直接死锁,如果有一个协程在慢慢
原创 2024-01-02 12:21:01
115阅读
基础 并发:电脑同时听歌,看小说,打游戏。cpu根据时间片进行划分,交替执行这三个程序。我们可以感觉是同时产生的。 并行:多个cpu(多核)上述动作同时执行 C语言:,实现并发过程使用的是多线程(C++的最小资源单元) GolangGolang中不是线程,而是Go程(goroutine),Go程是 ...
转载 2021-09-29 21:34:00
514阅读
1点赞
2评论
package mainimport ( "fmt")func main() { c := make(chan int) go func() { for i := 0; i < 5; i++ { c <- i } close(c) }() for data := range c { fmt.Println(data) } fmt.Println("main finished")}
原创 2021-03-27 21:51:03
253阅读
package mainimport ( "fmt")func main() { c := make(chan int) go func() { for i := 0; i < 5; i++ { c <- i } close(c) }() for data := range c { fmt.Println(data) } fmt.Println("main finished")}
原创 2021-03-27 21:51:03
425阅读
package mainimport "fmt"func main() { // 定义一个channel c := make(chan int) go func() { defer fmt.Println("goroutine结束") fmt.Println("goroutine正在运行") c <- 666 // 从channel中发送数据 }() num := <-c // 从 channel中读数据 fmt.Println("num = ", num) .
原创 2021-03-27 21:06:00
260阅读
package mainimport "fmt"func main() { // 定义一个channel c := make(chan int) go func() { defer fmt.Println("goroutine结束") fmt.Println("goroutine正在运行") c <- 666 // 从channel中发送数据 }() num := <-c // 从 channel中读数据 fmt.Println("num = ", num) .
原创 2021-03-27 21:06:00
120阅读
假设我们现在有这么一个需求: 计算1-200之间各个数的阶乘,并将每个结果保存在map中,最终显示出来,要求使用goroutine。 分析: (1)使用goroutine完成,效率高,但是会出现并发/并行安全问题; (2)不同协程之间如何通信; 对于(1):不同协程之间可能同时对一块内存进行操作,导
转载 2019-11-28 20:38:00
98阅读
2评论
是一个只能接收(receive)整数值的通道(channel)。这种类型的变量只能从通道读取数据,不能向通道写入数据。函数接收一
原创 2024-03-20 15:51:13
98阅读
原创 2021-07-02 14:32:17
1172阅读
本章节将介绍函数组合和集合管道,您可以结合这两种模式来迭代代码中的集合。了解这些模式的结构有助于您搭建自己的 java 程序,从而充分利用高阶函数和拉姆表达式。语句与表达式我们在代码中查找 for 循环,回惊奇的发现您的代码中对 for 循环的使用非常频繁。我们将这种情形称为 for 重复:只要我们需要重复似乎就会用到 for。在 Java 中 for 和 while 都是语句。语句执行一个操作但
转载 2024-10-25 15:23:29
32阅读
  在创建子进程的时候,会将父进程中的资源复制一份给子进程,然后他们各自使用自己的资源,那如果父进程想与子进程通信,如何达到呢,如果说采用套接字的方法,那未免太慢了,是否可以创建一个共同使用的内存,双方都可以进行访问呢,这样子进程要给父进程的数据,放到这块内存,父进程直接拿就可以了。操作系统就实现了这种机制,来支持进程之间进行通信。管道实现进程间通信  操作系统为进程间通信提供了管道这一内存工具,
  • 1
  • 2
  • 3
  • 4
  • 5