2009-11-23 5 views
1

J'essaie de mettre une variable vectorielle à l'intérieur d'une structure dans le langage de programmation Go de Google. Voilà ce que j'ai jusqu'à présent:Comment placer un vecteur dans une structure dans Go?

Want:

type Point struct { x, y int } 
type myStruct struct { 
myVectorInsideStruct vector; 
} 

func main(){ 
myMyStruct := myStruct{vector.New(0)}; 
myPoint := Point{2,3}; 
myMyStruct.myVectorInsideStruct.Push(myPoint); 
} 

Have:

type Point struct { x, y int } 

func main(){ 
myVector := vector.New(0); 
myPoint := Point{2,3}; 
myVector.Push(myPoint); 
} 

je peux obtenir le vecteur de travailler dans ma fonction principale très bien, mais je veux encapsuler à l'intérieur d'une structure pour une utilisation plus facile.

Répondre

1

Je ne suis pas sûr que ce soit ce que vous voulez, alors laisser un commentaire si cela ne fonctionne pas:

package main 

import "container/vector"; 

type Point struct { x, y int }; 

type mystruct struct { 
    myVectorInsideStruct * vector.Vector; 
} 

func main() { 
    var myMyStruct mystruct; 
    myMyStruct.myVectorInsideStruct = new(vector.Vector); 
    myPoint := Point{2,3}; 
    myMyStruct.myVectorInsideStruct.Push(myPoint); 
} 
+0

Je pense à la place de 'vector.New()' vous utilisez maintenant 'new (vector.Vector)' –

+0

Oui, j'ai remarqué que: http://stackoverflow.com/questions/1806673/are-vector-assignments-copied- par valeur-ou-par-référence-dans-googles-go-language/1806913 # 1806913 –

0

Je ne sais pas c'est ce que vous voulez, mais:

package main 

import (
    "fmt"; 
    "container/vector"; 
) 

type myStruct (
    struct { 
     myVectorInsideStruct vector.IntVector; 
    } 
) 


func main() { 
    v := new(myStruct); 
    v.myVectorInsideStruct.Init(0); 

    for i := 1 ; i < 10 ; i++ { 
     v.myVectorInsideStruct.Push(i); 
    } 

    fmt.Printf("v.myVectorInsideStruct: %v\n", v.myVectorInsideStruct.Data()); 
} 
+0

J'ai vu la question complétée (Point, ...) après avoir répondu –

+0

Vous pouvez modifier votre réponse si vous le souhaitez. –

+0

@Kinopino, votre réponse couvre :) –

Questions connexes