Go语言学习笔记(六)- 并发编程
发表于|更新于|Go
|总字数:18|阅读时长:1分钟|浏览量:
goroutine
channel(创建、发送、接收、关闭)
select 语句
sync 包:WaitGroup、Mutex、Once
context 包
文章作者: Charles
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 码农笔记!
相关推荐

2026-04-01
Go语言学习笔记(一)
前言2017年,简单的学习了一下Go语言,但苦于当时的工作没有办法实践,而我又刚换了工作,每天都要加班到最后一班地铁,没多久,学习的内容就基本上忘光光了,今年得空,可以在学习下Go语言,手头上也有两个项目有时间去重构,那就重新学习一次吧。本次学习使用go 1.26版本。 Go语言介绍Go语言由Google开发,对于程序开发效率、并发、云原生等有非常好的支持。对于Java程序员来说,学习起来非常容易。 核心特性:天然并发(Goroutine)、强类型、编译速度极快、垃圾回收(GC)、静态链接成单个可执行二进制文件。 适用场景:云原生开发(Docker/K8s 均由 Go 编写)、微服务、系统工具、高性能网络服务。 GOROOT和GOPATH对于Go新手还是有必要明确下这两个环境变量的含义,不然很容易纯靠字面意思搞错。 GOROOT,就是Go SDK的安装路径,不是go语言的项目路径,对于Java程序员来说,就是JDK的路径。 GOPATH,工作区路径,类似于Eclipse+maven的组合,将workspace和.m2合并在一个目录。最开始用起来老别扭了,不过从Go ...

2026-04-01
Go语言学习笔记(二)- 基础语法与数据类型
作为Java程序员,本章内容就走马观花的了解一下即可,这一章内容和其他语言没有太大的不同。 本章学习的内容 包申明、导入、main方法 变量声明(var和:=的区别) 基本类型:int、float、string、bool 常量与iota 类型转换 main方法通过一个HelloWorld的程序,说明第一小节内容:包申明、导入包、main方法。创建一个main.go 1234567package mainimport "fmt"func main() { fmt.Print("Hello World")} 包申明: 1package main 在Go语言中,每一个源文件都必须以package开头,它的作用就是定义了该文件属于哪个命名空间。这个名称可以随意定义,但main这个名称很特殊: 如果该文件的package是main,那么这个程序将会被编译成一个可执行程序。 对于不同的文件,也可以将包名定义为main,但是main方法只能有一个。 例如在main.go的同一级目录,创建一个utils.go,并且也声明为...

2026-04-02
Go语言学习笔记(三)- 复合数据类型
本章知识点: 数组与切片 map(字典) struct(结构体) 指针 泛型 数组与切片在 Go 中,数组是固定长度的,而切片是动态的、是对数组的抽象。 数组不管在Java还是Go似乎都不太常用,比较常用List或者Go中的切片。其语法如下: 1234567891011121314151617181920212223242526272829package mainimport "testing"func Test_Array(t *testing.T) { // 数组时值类型,当一个数组被赋值给另一个数组时,实际上是创建了一个新的数组,并将原数组的值复制到新数组中。这意味着对新数组的修改不会影响原数组,反之亦然。 // 定义一个长度为5的int数组,其默认值为0 var arr1 [5]int t.Log(arr1) // 定义一个长度为3的字符串数组,默认值为"" var arr2 [3]string t.Log(arr2) // 初始化 //字面量初始化 arr3 := [3]string{"a...

2026-04-03
Go语言学习笔记(四)- 控制流与函数
今天简单的学习下流程控制与函数,这一块大多数语言都差不多。 if/elseGo语言的if不需要小括号,但代码块必须使用{}包裹。 12345678func TestIf(t *testing.T) { age := 30 if age >= 18 { t.Log("adult") } else { t.Log("teenager") }} 其次,if条件必须是bool,不支持将整数、字符串、指针等作为条件。 Go 不像 C / C++ / JavaScript,不能用 0、1、nil 等隐式转 bool。 1234567func TestIf1(t *testing.T) { n := 1 //非布尔值 'n' (类型 int) 用作条件 if n { t.Log("error") }} if支持初始化语句这是 Go 很常见的...

2026-04-04
Go语言学习笔记(五)- 接口与类型系统
接口在Go语言中,接口的设计是一个典型的“鸭子类型”(Duck Typing)。如果一个结构体拥有了某个接口定义的所有方法,那么它就实现了这个接口。 先看看Java的接口(显示实现接口) 123456789interface Animal{ void say();}class Dog implements Animal { public void say(){ System.out.println("wang!") }} 类必须通过implements关键字明确申明自己实现了某个接口。 再看看Go的接口 123456789type Animal interface { Say();}type Dog struct{}func (d Dog) Say(){ fmt.Println("wang!")} Go是隐式实现接口,只要一个类型实现了接口需求的所有方法,就自动认为他实现...
评论
WalineDisqus
公告
又双叒从WordPress迁移到Hexo了,开启白嫖模式。


