Go语言go关键字创建协程
Go 语言是从 main() 函数开始执行,程序启动默认为 main() 函数创建一个协程,只要函数中使用关键字 go 即可创建新的协程执行并发。
关键字 go 后面设置某个函数,让协程对该函数执行并发操作,其语法如下:
按照关键字 go 的语法格式,通过示例说明如何实现 Go 语言的并发编程,示例如下:
我们知道函数定义可以分为 4 种类型,分别是:
在并发操作中,有返回值的函数会被忽略返回值,如果需要从并发中返回数据,只能使用通道实现,将需要返回的数据写入通道,主函数或其他并发函数都能从通道读取数据,从而实现数据共享。
定义并发函数只需要考虑是否需要设置函数参数,下面通过示例讲述带参数的函数如何实现并发过程:
关键字 go 后面设置某个函数,让协程对该函数执行并发操作,其语法如下:
go func(parameter)语法格式说明如下:
- go 代表 Go 语言关键字,用于实现高并发。
- func 代表已定义的函数名称,为并发执行提供程序入口。
- parameter代表函数参数。
按照关键字 go 的语法格式,通过示例说明如何实现 Go 语言的并发编程,示例如下:
package main
import (
"fmt"
"time"
)
func running() {
// 循环5次
for i := 0; i < 5; i++ {
fmt.Println("tick", i)
// 延时1秒
time.Sleep(1 * time.Second)
}
}
func main() {
// 并发执行程序
go running()
// 主程序
for i := 0; i < 5; i++ {
time.Sleep(1 * time.Second)
fmt.Println("Waitting for you")
}
}
运行上述代码,结果为:
tick 0
tick 1
Waitting for you
Waitting for you
tick 2
tick 3
Waitting for you
Waitting for you
tick 4
Waitting for you
我们知道函数定义可以分为 4 种类型,分别是:
- 无参数,无返回值;
- 有参数,无返回值;
- 无参数,有返回值;
- 有参数,有返回值。
在并发操作中,有返回值的函数会被忽略返回值,如果需要从并发中返回数据,只能使用通道实现,将需要返回的数据写入通道,主函数或其他并发函数都能从通道读取数据,从而实现数据共享。
定义并发函数只需要考虑是否需要设置函数参数,下面通过示例讲述带参数的函数如何实现并发过程:
package main
import (
"fmt"
"time"
)
func running(name string) {
// 循环5次
for i := 0; i < 5; i++ {
fmt.Printf("tick %v, %v\n", i, name)
// 延时1秒
time.Sleep(1 * time.Second)
}
}
func main() {
// 并发执行程序
var name = "Tom"
go running(name)
// 主程序
for i := 0; i < 5; i++ {
time.Sleep(1 * time.Second)
fmt.Println("Waitting for you")
}
}
代码的运行结果为:
tick 0, Tom
Waitting for you
tick 1, Tom
Waitting for you
tick 2, Tom
Waitting for you
tick 3, Tom
Waitting for you
tick 4, Tom
Waitting for you
ICP备案:
公安联网备案: