go 结构体手动销毁的方法问题

``` package main import ( "fmt" ) type Data struct { a int } func (this *Data) Des() { this = nil } func main() { d := &Data{ a: 1, } fmt.Println(d) d.Des() fmt.Println(d) } ``` 这段代码中this=nil为什么不起作用呢,变量d没有置nil
已邀请:

anoymouswho

赞同来自: dncmn

因为传递的是地址指向值的引用,指向结构体对象的指针值本身是拷贝传递的,你要改变地址需要两层指针。

```go
package main

import (
"fmt"
)

type Data struct {
a int
}

func Des(d **Data) {
*d = nil
}

func main() {
d := &Data{
a: 1,
}

fmt.Println(d)
Des(&d)
fmt.Println(d)
}
```

FancyGo - Golang 服务器 游戏 fancygo.cn

话说我如果就想在 (this *Data)Des(){} 方法里销毁,应该怎么写呢
@FancyGo 当该指针外部没有引用的时候自动会被标记然后回收

要回复问题请先登录注册