Come viene identificata una procedura come vicina o lontana?
La differenza tra le funzioni vicine e lontane è significativa solo quando si utilizza l'istruzione defer per gestire gli errori di panico o chiudere le risorse alla fine di una funzione. Quando viene rilevata un'istruzione di differimento, il runtime Go inserirà una variabile in uno stack che memorizza la funzione responsabile della gestione del differimento. Se la funzione differita è vicina, la variabile memorizzerà un puntatore alla funzione nello stesso pacchetto Go. Se la funzione differita è far, la variabile memorizzerà un puntatore a una funzione stub che chiamerà la funzione far tramite una chiamata tra pacchetti.
Le chiamate tra pacchetti sono più costose delle chiamate intra-pacchetto, quindi è generalmente preferibile utilizzare le funzioni Near quando possibile. Questo può essere fatto organizzando il codice in pacchetti in modo tale che le funzioni che devi utilizzare insieme siano definite nello stesso pacchetto.