首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
Go 中的 = 和 := 有什么区别?
Go 中的指针的意义是什么?
Go 多值返回有什么用?
Go 有异常类型吗?
Go 中的 rune 和 byte 有什么区别?
Go 语言中的深拷贝和浅拷贝?
什么叫字面量和组合字面量?
对象选择器自动解引用怎么用?
map 的值不可寻址,那如何修改值的属性?
有类型常量和无类型常量的区别?
为什么传参使用切片而不使用数组?
Go 语言中 hot path 有什么用呢?
引用类型与指针,有什么不同?
Go 是值传递,还是引用传递、指针传递?
Go中哪些是可寻址,哪些是不可寻址的?
slice 扩容后容量及内存如何计算?
goroutine 存在的意义是什么?
说说 Go 中闭包的底层原理?
defer 的变量快照什么情况会失效?
说说你对 Go 里的抢占式调度的理解。
简述一下 Go 栈空间的扩容/缩容过程?
说一下 GMP 模型的原理。
GMP 模型为什么要有 P ?
不分配内存的指针类型能用吗?
如何让在强制转换类型时不发生内存拷贝?
Go 中的 GC 演变是怎样的?
Go 中哪些动作会触发 runtime 调度?
有哪些情况会导致协程泄露?
局部变量分配在栈上还是堆上?
为什么常量、字符串和字典不可寻址?
为什么 slice 元素是可寻址的?
Go 的默认栈大小是多少?最大值多少?
Go 中的分段栈和连续栈的区别?
内存对齐、内存布局是怎么回事?
Go 里是怎么比较相等与否?
所有的 T 类型都有 *T 类型吗?
数组对比切片有哪些优势?
GMP 偷取 G 为什么不需要加锁?
堆引用栈内存是怎么回收的?
当前位置:
首页>>
技术小册>>
GO面试指南
小册名称:GO面试指南
goroutine 是 Go 语言中一种轻量级的线程实现,其存在的意义是为了提高程序的并发能力和性能。相比于传统的线程实现,goroutine 的创建和销毁代价较小,且使用更加简便,可以通过 Go 语言提供的关键字 go 来启动一个 goroutine,示例如下: ``` package main import ( "fmt" "time" ) func main() { // 启动一个goroutine,执行printHello函数 go printHello() // 主函数继续执行 fmt.Println("Main function continues to run...") // 让主函数休眠一段时间,等待goroutine执行 time.Sleep(time.Second) } func printHello() { fmt.Println("Hello from goroutine!") } ``` 在上述代码中,通过 go printHello() 启动了一个 goroutine 来执行 printHello 函数。由于 goroutine 的执行是异步的,因此主函数可以继续执行,而不需要等待 goroutine 执行完毕。在 printHello 函数中打印一条信息后,goroutine 就结束了。 goroutine 的另一个重要特性是可以通过 channel 来进行通信和同步,实现不同 goroutine 之间的数据传递和协作。例如: ``` package main import ( "fmt" "time" ) func main() { // 创建一个channel,用于传递数据 c := make(chan string) // 启动一个goroutine,发送数据到channel go sendHello(c) // 从channel接收数据 msg := <-c fmt.Println(msg) } func sendHello(c chan string) { // 向channel发送数据 c <- "Hello from goroutine!" } ``` 在上述代码中,通过 make(chan string) 创建了一个字符串类型的 channel,然后启动了一个 goroutine,将字符串 "Hello from goroutine!" 发送到了该 channel 中。在主函数中,通过 <-c 从 channel 中接收数据,并打印出来。注意,在接收数据时,如果 channel 中没有数据,主函数会被阻塞,直到有数据可用为止。 这些例子展示了 goroutine 的基本用法和特性,通过 goroutine 可以方便地实现并发和并行的程序,提高程序的性能和效率。
上一篇:
slice 扩容后容量及内存如何计算?
下一篇:
说说 Go 中闭包的底层原理?
该分类下的相关小册推荐:
WebRTC音视频开发实战
企业级Go应用开发从零开始
go编程权威指南(三)
深入浅出Go语言核心编程(六)
Go开发权威指南(上)
深入浅出Go语言核心编程(四)
深入浅出Go语言核心编程(一)
从零写一个基于go语言的Web框架
Go Web编程(中)
Go Web编程(上)
Go开发权威指南(下)
深入浅出Go语言核心编程(三)