接收函数返回内存地址而不是整数。

huangapple go评论75阅读模式
英文:

receiver function returns memory address instead on int

问题

我写了一个接收函数,应该返回一个整数,这个整数是一个房子地址的编号(一个定义好的结构体)。请看下面的代码。

当我调用get_number接收函数时,我得到的是一个看起来像是内存地址的东西(0x47dfc0)。我应该得到200。我搞不清楚为什么会这样。

如果简单地执行:fmt.Println(foo_house),我得到了我期望的结果:{200 Barrington}

package main

import "fmt"

type house struct {
	number int
	street string
}

// 接收函数
func (h house) get_number() int {
	return h.number
}

func main() {
	var foo_house house
	foo_house.number = 200
	foo_house.street = "Barrington"
	n := foo_house.get_number()
	fmt.Println(foo_house)
	fmt.Println(n)
}

请注意,我只翻译了代码部分,其他内容不做翻译。

英文:

I wrote a receiver function that should return an integer which is the number of an address of a house (a struct that defined). Please see my code below.

When I call the getnumber receiver function, I get what looks like a memory address (0x47dfc0). I should get 200. I cannot figure out why.

If simply do: fmt.Println(foo_house) I get what I expect: {200 Barrington}

package main

import "fmt"

type house struct {
	number int
	street string
}

// receiver function
func (h house) get_number() int {
	return h.number
}

func main() {
	var foo_house house
	foo_house.number = 200
	foo_house.street = "Barrington"
	n := foo_house.get_number
    fmt.Println(foo_house)
	fmt.Println(n)
}

答案1

得分: 3

你得到的是方法get_number的地址:

你需要评估get_number以获取其值,例如:

n := foo_house.get_number()

英文:

What you are getting is the address of the method get_number:

You need to evaluate get_number to get its value, like:

n := foo_house.get_number()

huangapple
  • 本文由 发表于 2022年2月10日 00:57:01
  • 转载请务必保留本文链接:https://go.coder-hub.com/71053655.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定