2016-04-20 9 views
-3

Ich versuche, eine Liste von Saiten in Golang zu machen. Ich suche das Paket container/list, aber ich weiß nicht, wie man eine Zeichenfolge einfügt. Ich habe es mehrmals versucht, aber 0 Ergebnis.Liste der Saiten - Golang

Sollte ich ein anderes Ding anstelle von Listen verwenden? Vielen Dank im Voraus.

edit: Ich weiß nicht, warum Sie diese Frage sind Bewertung mit Negative Stimmen ...

+2

, wenn Sie einen besonderen Bedarf für eine doppelt verknüpfte Liste haben, Sie fast immer eine '[] string' Scheibe statt. – JimB

+0

Verwenden Sie stattdessen Scheibe. Oder etwas Code eingeben. – Bryce

Antwort

1

Wenn Sie sich den Quellcode des von Ihnen verlinkten Pakets ansehen, scheint der Typ List eine Liste mit Element s zu enthalten. Mit Blick auf Element Sie werden sehen, dass es ein exportierte Feld Value die eine interface{} Typ genannt hat, könnte es Sinn buchstäblich alles sein: string, int, float64, io.Reader usw.

Ihre zweite Frage zu beantworten, Sie‘ Ich sehe, dass List eine Methode namens Remove(e *Element) hat. Sie können es so verwenden:

fmt.Println(l.Len()) // prints: 4 

// Iterate through list and print its contents. 
for e := l.Front(); e != nil; e = e.Next() { 
    if e.Value == "4" { 
     l.Remove(e) // remove "4" 
    } else { 
     fmt.Println(e.Value) 
    } 
} 

fmt.Println(l.Len()) // prints: 3 

Im Großen und Ganzen ist Golang Dokumentation in der Regel ziemlich solide, so dass Sie immer zuerst dort überprüfen sollten.

https://golang.org/pkg/container/list/#Element

+0

Danke für Ihre Hilfe. Ich habe es gelöst, Noobie scheitern. – dbaus

2

die genaue Beispiel Ändern Sie verbunden sind, und die Änderung der ints Strings funktioniert für mich:

package main 

import (
    "container/list" 
    "fmt" 
) 

func main() { 
    // Create a new list and put some numbers in it. 
    l := list.New() 
    e4 := l.PushBack("4") 
    e1 := l.PushFront("1") 
    l.InsertBefore("3", e4) 
    l.InsertAfter("2", e1) 

    // Iterate through list and print its contents. 
    for e := l.Front(); e != nil; e = e.Next() { 
     fmt.Println(e.Value) 
    } 
} 
+0

Gelöst. Danke vielmals. – dbaus