Go不同数据类型传地址到函数的修改方式

本文通过具体的Go语言代码示例,展示了不同类型变量(如数组、整型和字符串)在函数间传递时的行为差异。对于数组,无论是否使用指针传递都能修改其内容;而对于整型和字符串,则需要通过指针传递才能修改其值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本地版本 version go1.17.2

一、数组

package main

import (
	"fmt"
)
func main()  {
	// 数组
	var arr = [3]int{1,2,3}
	testArr(&arr)
	fmt.Println(arr)
}

//
func testArr(arr *[3]int) {
	for _,k := range arr {
		fmt.Println(k)
	}
	fmt.Println(*arr)
	// 使用 * 改变数组变量
	(*arr)[1] = 1
	// 直接改变数据
	arr[2] = 7
}

运行结果:
运行结果
可以看到,数组即使不加 * 也能够正常改变数量内的值

二、int

package main

import (
	"fmt"
)

func main()  {
	// 数组
	var num int = 3;
	testNum(&num)
	fmt.Println(num)
}

func testNum(num *int) {
	// 当不带 * 进行数据的赋值,则会报错。
	//num = 2
	*num = 2
}

运行结果:
运行结果
可以看出 int 类型只能通过 *变量名 才能改变值

三、string

package main

import (
	"fmt"
)

func main()  {
	// 数组
	var str string = "123";
	testNum(&str)
	fmt.Println(str)
}

func testNum(str *string) {
	//str = "456"
	*str = "456"
}

运行结果:
运行结果
可以看出 string 类型只能通过 *变量名 才能改变值

四、总结

  • array 地址传递到函数中,无论是否使用 * 作为前缀都可以修改数组的值
  • int、string 则必须添加 * 作为前缀才能修改相关的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值