登录
首页 >  Golang >  Go问答

调用函数后清空切片

来源:stackoverflow

时间:2024-03-19 10:42:25 331浏览 收藏

在 Go 语言中,当一个函数被调用时,它会创建一个该函数局部作用域的新副本。这意味着,如果函数内对结构体切片进行修改,这些修改在函数外将丢失。要解决这个问题,需要将函数声明为指针接收者,即使用 *Mystruct 作为函数参数。这样,函数内对切片所做的修改将直接反映在结构体实例上,从而保留函数调用后的内容。

问题内容

这是我试图理解和改变的一个 golang 行为:我编写了一个用 golang 中的切片填充结构的方法。它在方法本身内工作,但切片内容在方法之外会丢失。不过我想保留内容。这可能是因为切片内的指针在 populateslice 方法的末尾被删除,但是我应该如何编写它来防止这种情况发生,即。函数调用后将内容保留在 mystruct.myslice 中?

这是我编写代码的方式:

type BBDatacolumn struct {
  Data []string
}

type Mystruct struc {
   myslice []BBDatacolumn
}

//Method to populate the slice of the structure mystruct:
func (self mystruct) populateslice() {
   for i:=0; i

解决方案


该方法需要位于结构的指针上,如下所示:

func (self *mystruct) Foo () {}

否则,您调用方法的 mystruct 对象仅是该函数的本地对象。

好了,本文到此结束,带大家了解了《调用函数后清空切片》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>