考虑 go 中的以下堆栈实现:
package main
import "fmt"
var a [10]int
var top int = -1
func main() {
printStack()
push(1)
printStack()
push(23)
printStack()
pop()
push(2)
printStack()
println("Top element is", getTop)
}
func push(x int) {
top += 1
a[top] = x
}
func pop() {
top -= 1
}
func getTop() int {
return a[top]
}
func printStack() {
fmt.Println(top+1, "Stack: ", a, "Top", getTop)
}
问题:
当我使用时println("Top element is", getTop),它打印出内存地址0x193928,但当我调用时println("Top element is", getTop()),它返回2。返回 2 是有道理的,但我不明白为什么它返回内存地址?不应该调用没有括号的 getTop 是无效的吗?
似乎在 golang 中不能有同名的变量和函数。这是正确的假设吗?
播放:https : //play.golang.org/p/vvOGG296gr
慕的地8271018
相关分类