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