小编21s*_*1st的帖子

Golang:为什么结构引用的内存地址会发生变化?

我有一个结构和方法正在处理结构参考.每次调用方法时指针地址都在变化.为什么会那样?

package main

import "k8s.io/contrib/compare/Godeps/_workspace/src/github.com/emicklei/go-restful/log"

type Whatever struct{
    Name string
}

func (whatever *Whatever) GetNameByReference() (string) {
log.Printf("Whatever.GetNameByReference() memory address: %v", &whatever)

    return whatever.Name
}

func evaluateMemoryAddressWhenNotWritingAnything()  {
    whatever := Whatever{}

    whatever.GetNameByReference()
    whatever.GetNameByReference()
    whatever.GetNameByReference()
}

func main() {
    evaluateMemoryAddressWhenNotWritingAnything()
}
Run Code Online (Sandbox Code Playgroud)

输出:

log.go:30: Whatever.GetNameByReference() memory address: 0xc420034020
log.go:30: Whatever.GetNameByReference() memory address: 0xc420034030
log.go:30: Whatever.GetNameByReference() memory address: 0xc420034038
Run Code Online (Sandbox Code Playgroud)

struct pointers reference pass-by-reference go

5
推荐指数
1
解决办法
2665
查看次数

标签 统计

go ×1

pass-by-reference ×1

pointers ×1

reference ×1

struct ×1