Comment puis-je imprimer la valeur du pointeur d'un objet? Quelle est la valeur du pointeur veux dire?

Je suis en train de jouer au rendez-vous et n'ont pas encore un bon modèle mental de lorsque les structures sont passés par valeur ou par référence.

C'est peut-être une question stupide mais je veux juste s'amuser un peu et voir si je suis encore à travailler sur le même objet ou j'ai fait une copie de celui-ci (passé par valeur).

Est-il un moyen d'imprimer le pointeur (ou id interne si la valeur du pointeur est modifié par gc) d'un objet?

package main

import ( "runtime" )

type Something struct {
    number int
    queue chan int
}

func gotest( s *Something, done chan bool ) {
    println( "from gotest:")
    println( &s )
    for num := range s.queue {
        println( num )
        s.number = num
    }
    done <- true
}

func main() {
    runtime.GOMAXPROCS(4)
    s := new(Something)
    println(&s)
    s.queue = make(chan int)
    done := make(chan bool)
    go gotest(s, done)
    s.queue <- 42
    close(s.queue)
    <- done
    println(&s)
    println(s.number)
}

donne sur mon windows (8g version compilée):

0x4930d4
from gotest:
0x4974d8
42
0x4930d4
42

Pourquoi le pointeur de la valeur à partir de l'intérieur de l'aller routine afficher une valeur différente? La quantité sur l'objet d'origine ne sont modifiées de sorte qu'il a été de travailler avec le même objet. Est-il possible de voir un id de l'objet qui est persistant?

InformationsquelleAutor Jeroen Dirks | 2011-02-08