Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。
1 指针的定义
首先是指针的定义,不同于C语言的是,Go语言中指针的定义是将*
号放在类型的前面实现的。例如:
var a int = 2
var pa *int = &a
*pa = 3
fmt.Println(a)
上述程序中,首先定义了一个变量a
, 这个变量的地址赋值给一个指针pa
,然后使用指针,修改指定地址内的数值为3
,此时变量a的值就变成了3。
2 参数传递
Go语言中使用值传递这一种参数传递方式。调用之后,不会改变原来地址里面的值。所以,要在函数中修改其他的变量,则需要使用指针的方式进行传递。
值传递的原理
一个变量作为参数,传递给某个函数进行使用。函数内拿到这个变量,会拷贝这个变量值,并写入到一块新的地址里面去。函数操作的是新地址下面的新变量,不会对老的变量有影响。
如果这个变量使用的是指针,才会进行地址层面的操作,进而对老的变量产生影响。

网友评论