我有这样的代码
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)
我知道列表有 Front() 方法。 http://golang.org/pkg/container/list/ 但为什么它在这里提示? 很困惑,需要帮助。 谢谢!
最佳答案
[]T
不是其他语言(例如 Python)中提到的“列表”。在 Go 中,它被称为“slice ”http://golang.org/ref/spec#Slice_types
它的元素范围从0
到len(slice)-1
,并使用类似C 的数组访问符号进行访问。 slice 的“前面”通常被认为是 slice[0]
,但如果您使用 slice 来实现诸如堆栈之类的东西,您可能会考虑前面的不同索引。
Go 中没有内置类型定义任何方法,但有 built-in functions将它们作为参数,例如 len
。
您链接到的包实现了 List
类型。正如顶部的文档所说“包列表实现了一个双向链表”。这个双向链表可以通过调用 list.New()
创建,它有一个 Front
方法,以及包文档中列出的其他方法。
关于去浪。调用 ".Front()"获取字符串列表。但是返回错误说字符串列表没有 Front 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23692242/