2016-06-09 8 views
-1

Wie kann ich das Todos-Objekt mit einer For-Schleife füllen?Füllen Sie ein Objekt in Golang

type Row struct { 
    Name  string 
    Completed bool 
    Due  time.Time 
    Rcount string 
} 
type Rows []Row 
todos := Rows{ 
     Row{Name: "Write presentation"}, 
     Row{Name: "Host meetup"}, 
} 
+0

Was meinst du mit füllen? – khrm

+0

Was versuchst du zu tun? Wenn Sie nur zwei Zeilen mit den Namen "Präsentation schreiben" und "Gastgeber treffen" möchten, warum möchten Sie eine Schleife verwenden? – jussius

+0

Ich habe ein SQLite-Objekt und möchte die Zeilen von SQL zu todos-> Rows-> Row (hier) natürlich mit der result.next() for-Schleife von sql-object teilen. – Moo

Antwort

0

Die Frage ist ein wenig schwer zu folgen, sondern versuchen, (Handhabung der Kürze halber weggelassen Fehler) ausgehend mit etwas nach diesem Muster:

rows, _ := db.Query(string, args...) 
var Rows []Row 
for rows.Next() { 
    var r Row 
    rows.Scan(&r.Name, &r.Completed, &r.Due, &r.Rcount) 
    Rows = append(Rows, r) 
} 

Wenn Sie die Frage klären können wir vielleicht besser liefern Antworten

0

Ich glaube, Sie suchen für die eingebaute Funktion append

Beachten Sie, dass es in der Regel in Kombination mit einer Zuordnung verwendet wird, weil es zusätzliche Speicher zuweisen müssen können. Ein Zero-Value-Slice funktioniert gut, man muss make nicht aufrufen.

steps := []string{"write program", "???", "profit"} 

var rows []Row 
for _, tasks := range steps { 
    rows = append(rows, Row{Name: tasks}) 
} 

Wenn Sie eine sqlite3 Abfrageergebnis Schleife über, wird Ihre Schleife anders aussehen, aber das x = append(x, ...) Muster die gleichen

bleiben Wenn Sie im Voraus wissen, wie groß Ihre Scheibe sein wird, explizite Initialisierung mit make wird effizienter sein.

var rows = make([]Row, len(steps)) 
for i, tasks := range steps { 
    rows[i] = Row{Name: tasks} 
} 
Verwandte Themen