Go语言学习之入门篇(五)

Go语言基础入门,Go语言指针基础知识。
摘要由CSDN通过智能技术生成

1.Go语言的指针

学过C++和C语言的小伙伴应该对指针类型并不陌生,指针类型和一般类型不一样的地方在于其存储的是地址而不是一个值。以下通过一个简单的例子感受指针类型和一般类型之间的区别:

package main
import "fmt"

func foo1 (b int) {
	// 将传入的值修改为20
	b = 20
	fmt.Println("b value is ", b, "in foo1")
}

func main (){
	// 声明一个整型变量a,并赋值为10
	var a int = 10
	fmt.Println("a value is ", a, "before foo1")
	foo1(a)
	fmt.Println("a value is ", a, "after foo1")
}

运行结果:

a value is  10 before foo1
b value is  20 in foo1
a value is  10 after foo1

Go语言的函数方法如果用一般类型作为形参类型,则采用的是值传递的方式,这也是为什么在传入a后,在foo1中将值改为20后,在main中a的值仍然是10的原因。可以认为仅仅是将a的值拷贝了一份传入foo1,自身的值并不受foo1的影响。那么有一个新的问题,如果希望通过函数方法修改main中变量的值那应该怎么办呢?这个时候就要用到我们的指针类型,即将变量a的地址传入方法,则函数方法在改变该地址上的内容时修改的便是a变量的值,我们看个例子

package main
import "fmt"

func foo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值