dire per alcuni molto semplice codice Golang:Golan funziona su una macchina virtuale?
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)
}
Questo ha il seguente output:
0x2000
0x2020
Cosa sta succedendo qui? Questo non sembra un puntatore a funzione, o qualsiasi tipo di puntatore per quella materia, che si troverà nello stack. Capisco anche che Go, pur offrendo alcune funzionalità di basso livello nel reparto threading, richiede anche un sistema operativo per il suo funzionamento; C è funzionale su tutte le piattaforme di computer e sistemi operativi possono essere scritti in esso mentre Go ha bisogno di un sistema operativo per funzionare e in effetti funziona solo su alcuni sistemi operativi al momento. I puntatori di funzione molto regolari indicano che questo funziona su una VM? O il compilatore è semplicemente collegato a funzioni di basso livello C?
Dopo la registrazione del codice della libreria per vedere se 'fmt' o 'reflect' stava modificando i valori dei puntatori delle funzioni quando li stampavo, sono giunto alla conclusione che non lo fanno. Vai davvero solo mappe il tuo codice vicino al fondo dello spazio VM. :) – hobbs
non lo sa e lo chiedi, perché votarlo? – vuhung3990