在Go中,可以通过使用goroutine来实现并发。并发是指在同一时间内执行多个独立的任务。
按值传递是指函数在调用时会将参数的值复制一份给函数内部的变量,因此对函数内部变量的修改不会影响到原始变量。
下面是一个示例代码,演示了如何使用goroutine实现并发和按值传递:
package main
import (
"fmt"
"time"
)
// 定义一个函数,接收一个字符串参数
func printMessage(msg string) {
for i := 0; i < 5; i++ {
fmt.Println(msg)
time.Sleep(time.Millisecond * 500)
}
}
func main() {
// 启动一个goroutine,并传入参数
go printMessage("Hello")
// 主goroutine 继续执行其他操作
for i := 0; i < 5; i++ {
fmt.Println("World")
time.Sleep(time.Millisecond * 500)
}
}
在上面的示例代码中,我们定义了一个函数printMessage
,该函数接收一个字符串参数msg
。在main
函数中,我们使用go
关键字启动了一个goroutine,将字符串"Hello"作为参数传递给printMessage
函数。同时,主goroutine继续执行for
循环打印"World"。
由于使用了goroutine,printMessage
函数和for
循环可以并发执行,从而实现了并发。同时,由于按值传递的特性,printMessage
函数内部的变量msg
的修改不会影响到原始的字符串参数。
运行上述代码,你会看到"Hello"和"World"交替打印输出,这就是并发执行的效果。