文字列の型エイリアスの使用string.join機能Golang:私は、文字列 <p></p>のようなタイプのSpecialScopes列</p> <p>の型の別名を持っていると私はstrings.Joinを使用して、このタイプの配列に参加したい
func MergeScopes(scopes ...SpecialScopes) SpecialScopes {
return strings.Join(scopes, ",")
}
しかし、上記と私はエラー
cannot use scopes (type []SpecialScopes) as type []string in argument to strings.Join
cannot use strings.Join(scopes, ",") (type string) as type SpecialScopes in return argument
を取得するには、ミリアンペアする方法がありますke golangは、SpecialScopesは文字列の別の名前であり、その上で結合関数を実行することを認識していますか? これを行う最も効率的な方法は何ですか?私が見る1つの方法は、配列のすべての要素を文字列にキャストし、結合してからSpecialScopesにキャストして値を返します。
更新1: 値をキャストする実装があります。これを行うより速い方法のための任意の提案?
func MergeScopes(scopes ...SpecialScopes) SpecialScopes {
var s []string
for _, scope := range scopes {
s = append(s, string(scope))
}
return SpecialScopes(strings.Join(s, ","))
}
提起として答えは質問のために右であり、それは安全ではない使用していないので、それらを私はYandryのでいいと思うが、大局的、Iこの操作の速度については心配しません。これはあなたのアプリがほとんどの時間を費やす場所ではない可能性があります。この関数内でも、結合文字列を作成するallocは、サンプルコード中の中間の[[]文字列を作成するコストを犠牲にするかもしれません。 – twotwotwo