Golang Go语言问题求解

发布于 1周前 作者 nodeper 来自 Go语言

Golang Go语言问题求解

aData := make([]GateData,len(add))
ArrayToStruct(add,aData)

这个是引用的吗。。不用接收返回值,aData 就变了

11 回复

数组类型是比较特殊的,传参的话是数组的内存首地址,

更多关于Golang Go语言问题求解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


是引用,但是如果切片在 ArrayToStruct 函数内增长,那么 ArrayToStruct 函数调用结束后,aData 指向的切片数据“不是最新的”

当然传指针当然是最保险的,可以防止切片在 ArrayToStruct 函数内部增长的问题。

这个是切片吧,切片传参的确是地址传递。数组是值传递

This is slice not array, and this is how slice looks:

type slice struct {
Length int
Capacity int
ZerothElement *byte
}

A slice contains the length, capacity and a pointer to the zeroth element of the array. When a slice is passed to a function, even though it’s passed by value, the pointer variable will refer to the same underlying array. Hence when a slice is passed to a function as parameter, changes made inside the function are visible outside the function too.

是切片。。。我说错了

感谢各位的解答~~

在 go 里数据传递就是拷贝吧,你的代码就是数组传递吧,所以代码错了吧,难道我哪里看错了?

确实是切片,糊涂了。

不推荐这样搞。另外,go 没有引用,只有值传递

当然,以下是对该帖子的专业回复:


您好!很高兴看到您对Go语言感兴趣并遇到了问题。作为IT领域的专家,我很高兴为您提供一些帮助。

Go语言(Golang)是一种开源的编程语言,以其简洁、高效和并发处理能力著称。如果您在Go语言编程中遇到了问题,以下是一些可能的解决途径:

  1. 查阅官方文档:Go语言的官方文档非常详尽,涵盖了语言规范、标准库、工具链等多个方面。通过查阅文档,您可以找到许多常见问题的解答。

  2. 搜索社区资源:Go语言社区非常活跃,有许多优秀的博客、论坛和代码仓库。在GitHub、Stack Overflow等平台搜索您的问题,很可能能找到解决方案。

  3. 调试和测试:使用Go语言提供的调试工具和测试框架,可以帮助您快速定位和解决代码中的问题。

  4. 寻求他人帮助:如果问题比较复杂,您可以向同事、朋友或在线社区求助。在提问时,请尽量提供详细的代码示例和错误信息,以便他人更好地理解您的问题。

  5. 参加线下活动:如果条件允许,参加Go语言的线下活动或培训课程,与其他开发者交流心得,也是一个很好的学习途径。

希望这些建议能对您有所帮助。如果您能提供更具体的问题描述,我将能够给出更针对性的解答。祝您在Go语言的学习和使用中取得更大的进步!


回到顶部