GO:从列表中键入断言

时间:2015-01-28 03:42:04

标签: go

我在列表中存储了一组字符串。我遍历列表以与字符串"[the]"进行比较。

当我使用函数strings.EqualFold时,它会出现此错误:

  

不能在函数参数中使用e.Value(type interface {})作为类型字符串:need type assertion

代码如下:

for e := l.Front(); e != nil; e = e.Next() {
        if(strings.EqualFold("[the]", e.Value)){
            count++

        }
    }

2 个答案:

答案 0 :(得分:5)

由于Go的链接列表实现使用空interface{}来存储列表中的值,您必须使用type assertion,如错误指示访问您的值。

因此,如果在列表中存储string,则从列表中检索值时,必须键入断言值为字符串。

for e := l.Front(); e != nil; e = e.Next() {
    if(strings.EqualFold("[the]", e.Value.(string))){
        count++
    }
}

答案 1 :(得分:2)

从“e.Value”换掉“e.Value。(string)”。