说一些非常简单的 Golang 代码:


package main 

import "fmt"


func plus( a int, b int) int {


    return a+b

}


func plusPlus(a,b,c int) int {

    return a  +b  + c

}


func main() {


    ptr := plus

    ptr2 := plusPlus


    fmt.Println(ptr)

    fmt.Println(ptr2)

}

这有以下输出:


0x2000

0x2020

这里发生了什么?这看起来不像一个函数指针,或者任何类型的指针,可以在堆栈中找到。我也明白 Go,虽然在线程部门提供了一些不错的低级功能,但它也需要一个操作系统才能运行;C 在所有计算机平台上都可以运行,操作系统可以用它编写,而 Go 需要一个操作系统才能运行,实际上现在只能在少数操作系统上运行。非常常规的函数指针是否意味着这适用于虚拟机?或者编译器只是链接到低级 C 函数?