GOLANG的参数传递、引用类型

简介: GOLANG的参数传递、引用类型

在Go语言中,参数传递可以分为值传递和引用传递,这取决于参数的类型。

  1. 值传递(Pass by Value):当传递基本类型(如整数、浮点数、布尔值等)或结构体(struct)作为参数时,实际上是将参数的副本传递给函数或方法。在函数内部对参数的修改不会影响原始值。

示例:

func modifyValue(x int) {
   
    x = 100
}

func main() {
   
    num := 10
    modifyValue(num)
    fmt.Println(num) // 输出:10
}

在上述示例中,将num作为参数传递给modifyValue函数,但函数内部对x的修改不会影响到num的值。

  1. 引用传递(Pass by Reference):当传递切片(slice)、映射(map)、通道(channel)或指针(pointer)作为参数时,实际上是传递引用,函数内部对参数的修改会影响原始值。

示例:

func modifySlice(s []int) {
   
    s[0] = 100
}

func main() {
   
    numbers := []int{
   1, 2, 3}
    modifySlice(numbers)
    fmt.Println(numbers) // 输出:[100, 2, 3]
}

在上述示例中,将切片numbers作为参数传递给modifySlice函数,函数内部修改了切片中的第一个元素,这也影响了原始切片的值。

需要注意的是,即使通过引用传递传递了指针类型的参数,也不能修改指针本身的指向,因为指针本身也是值传递的。但通过指针可以修改指针指向的值。

示例:

func modifyPointer(ptr *int) {
   
    *ptr = 100
}

func main() {
   
    num := 10
    modifyPointer(&num)
    fmt.Println(num) // 输出:100
}

在上述示例中,通过指针将num的地址传递给modifyPointer函数,函数内部通过指针修改了num的值。

总结而言,Go语言中的参数传递可以通过值传递和引用传递来实现,根据参数的类型来确定传递方式。在值传递中,函数对参数的修改不会影响原始值,而在引用传递中,函数对参数的修改会影响原始值。

相关文章
|
1月前
|
编译器 Go
Golang底层原理剖析之函数调用栈-传参和返回值
Golang底层原理剖析之函数调用栈-传参和返回值
32 0
|
7月前
|
缓存 Java Serverless
|
4天前
|
Go
go值传递和引用传递
go值传递和引用传递
7 0
|
1月前
|
存储 机器学习/深度学习 程序员
Golang数据类型之基本数据类型
Golang数据类型之基本数据类型
43 1
|
8月前
|
存储 安全 Go
Golang 语言中的非类型安全指针
Golang 语言中的非类型安全指针
25 0
|
8月前
|
存储 编译器 Go
100天精通Golang(基础入门篇)——第4天: Go语言中的变量与常量详解:声明、赋值和使用
100天精通Golang(基础入门篇)——第4天: Go语言中的变量与常量详解:声明、赋值和使用
51 0
|
11月前
|
算法 Go 调度
|
11月前
|
Go
02-Golang-变量定义和使用
02-Golang-变量定义和使用
|
11月前
|
存储 程序员 Go
Golang-变量和常量
Golang 中的变量和常量
45 0
|
11月前
|
Go C语言
Golang-基本数据类型
Golang 中的基本数据类型介绍
62 0