欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Golang】Golang基础语法(七):指针

【Golang】Golang基础语法(七):指针

2025/8/16 6:42:08 来源:https://blog.csdn.net/Coffeemaker88/article/details/144229156  浏览:    关键词:【Golang】Golang基础语法(七):指针

指针

与 C/C++ 相比,Golang 的指针更加简单。Golang 的指针不支持运算,意味着 Golang 的指针不能被当作一个迭代器来对容器进行遍历。

与指针操作相关的概念是:Golang 的函数进行值传递还是引用传递?

答案是,Golang 当中只有值传递,而没有引用传递

这意味着 Golang 在进行函数调用时,一定会对实参进行拷贝,再将实参赋值给形参。

如果函数的形参是指针类型,则此时拷贝的是传递的地址,在函数中直接对指针所指向的地址的值进行修改,这类函数的行为类似于引用传递,但主要区别在于在这类函数中的行为仍然是对指针进行操作。

具体用法见下例:

package mainimport "fmt"/*  与 C/C++ 相比, Golang 的指针非常的简单
1. Golang 的指针定义:var a int = 2var pa *int = &a	// * 在 int 前, 而 C/C++ 的 * 在 int 后*pa = 3				// 解引用赋值fmt.Println(a)		// 结果为 3注意: Golang 的指针不能进行运算, 意味着它不能被当作一个迭代器来对容器遍历2. 参数传递:值传递? 引用传递?- Go 语言只有值传递一种方式, 只要调用函数, 传入的实参就会被拷贝- 当形参类型为指针时, 可以将变量 a 以 &a 的形式传递到函数当中. 此时的行为类似于引用传递- Object, 以 cache 类类型为例假定现在 cache object 中有一个指针, 指向一块动态内存.Golang 会对 cache object 进行拷贝, 拷贝的是地址, 此时在函数中仍然会对实参指向的地址进行修改.而如果 cache object 中有一些状态, 则不能简单地对地址进行拷贝, 因为我们可能需要对状态进行修改, 因此使用指针进行引用传递
*///func swap(a, b *int) {
//	*b, *a = *a, *b
//}func swap(a, b int) (int, int) {return b, a
}func main() {a, b := 3, 4//swap(&a, &b)swap(a, b)fmt.Println(a, b)
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词