如何将[]字符串转换为[] namedstring

时间:2013-10-31 20:05:11

标签: types go

在go中我有一个命名类型

type identifier string

我正在使用返回[]string的标准库方法,我希望将其转换为[]identifier。除了:

之外,还有更顺畅的方法吗?
...
stdLibStrings := re.FindAllString(myRe, -1)
identifiers := make([]identifier, len(stdLibStrings))
for i, s := range stdLibStrings {
    identifiers[i] = identifier(s)
}

我的最终目标是让这个名为identifier的类型有一些方法,如果我没有弄错的话,需要一个命名类型,而不是使用未命名的类型作为不允许的接收器。

感谢。

1 个答案:

答案 0 :(得分:3)

  

The Go Programming Language Specification

     

Assignability

     

值x可赋值给T类型的变量(“x可赋值给   [本例]中的T“):

     

x的类型V和T具有相同的基础类型和至少一个V   或T不是命名类型。

例如,

package main

import "fmt"

type Indentifier string

func (i Indentifier) Translate() string {
    return "Translate " + string(i)
}

type Identifiers []string

func main() {
    stdLibStrings := []string{"s0", "s1"}
    fmt.Printf("%v %T\n", stdLibStrings, stdLibStrings)
    identifiers := Identifiers(stdLibStrings)
    fmt.Printf("%v %T\n", identifiers, identifiers)
    for _, i := range identifiers {
        t := Indentifier(i).Translate()
        fmt.Println(t)
    }
}

输出:

[s0 s1] []string
[s0 s1] main.Identifiers
Translate s0
Translate s1