goLang。呼叫" .Front()"对于字符串列表。但返回错误说字符串列表没有Front方法

时间:2014-05-16 03:36:41

标签: go

我有这样的代码

t := strings.FieldsFunc(value, extract_word)
        fmt.Println("t:", len(t),t)
        m := make(map[string]int)
    for word := t.Front(); word != nil; word=word.Next(){
            m[word]++   
    }

它会出现此错误

t.Front undefined (type []string has no field or method Front)

我知道list有Front()方法。 http://golang.org/pkg/container/list/ 但为什么在这里抱怨? 如此困惑,需要帮助。 谢谢!

2 个答案:

答案 0 :(得分:2)

[]T不是其他语言(例如Python)中引用的“列表”。在Go中,它被称为“Slice”http://golang.org/ref/spec#Slice_types

其元素范围从0len(slice)-1,并使用类似C的数组访问表示法进行访问。切片的“前面”通常被认为是slice[0],但如果你使用切片来实现类似的东西,例如堆栈,你可以考虑使用不同的索引。

Go中没有内置类型定义了任何方法,但确实有built-in functions将它们作为参数,例如len

您链接的包实现了List类型。正如顶部的文档所说“包列表实现了一个双向链表”。您可以通过调用list.New()创建的这个双向链接列表具有Front方法,在包文档中列出的其他方法中。

答案 1 :(得分:1)

t不是List。它是一串字符串(切片和列表不是一回事)。切片的第一个元素是[0]

我相信你的for循环就是这个(未经测试):

for _, word := range t {
    m[word]++   
}