英文:
In Golang if I am calling a func inside fmt.Println(someName) without () then also there is no error but it is printing some hashcode. Why so?
问题
这可能是一个愚蠢的问题,但我对Golang还不熟悉,所以尝试了一些代码更改以便理解。
我创建了一个如下所示的函数:
func main() {
fmt.Println(foo)
}
func foo() int {
return 10
}
在fmt.Println(foo)
中,调用foo
时,我没有使用括号(通常我们会像foo()
这样调用函数)。
但是它没有报错/异常,而是打印了一些哈希码,例如0x10458bda0
,并且每次调用时都会发生变化。所以我想知道为什么会打印哈希码?在Go中,函数是否也是临时存储在某个内存中,并返回该地址。
英文:
This may be a silly Question but I am new to Golang. so was trying with some code changes just to understand.
I created a func as shown below:
func main() {
fmt.Println(foo)
}
func foo() int {
return 10
}
In fmt.Println(foo) while calling foo, I am not giving () (normally we call func like foo()).
But it is not giving any error/exception, in return it is printing some hashcode like 0x10458bda0
and for every call it is getting changed. so just want to know why it is printing hash? In go are functions also temporarily stored in some memory and returning that address.
答案1
得分: 3
Golang将函数存储在内存中,并将函数传递给fmt.Println()
,例如fmt.Println(foo)
将打印该函数在内存中的地址。每次调用fmt.Println(foo)
时,该地址不会改变。另一方面,如果将函数调用传递给fmt.Println()
,例如fmt.Println(foo())
,函数foo()
将首先被执行,然后打印其返回值。
英文:
Golang stores the functions somewhere in the memory and passing a function to fmt.Println()
, e.g., fmt.Println(foo)
will print the address of that function in memory. That address does not change for every call to fmt.Println(foo)
. On the other hand, if you passed a function call to the fmt.Println()
, e.g., fmt.Println(foo())
, the function foo()
will be executed first and its return value will be printed.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论