現在、perlの方法はありません。スライスを反復し、スライス要素をマップに配置するだけです(例:キーマップのよう:あなたが何をしたいかに応じて、
func main() {
var elements []string
var elementMap map[string]string
elements = []string{"abc", "def", "fgi", "adi"}
// initialize map
elementMap = make(map[string]string)
// put slice values into map
for _, s := range elements {
elementMap[s] = s
// or just keys, without values: elementMap[s] = ""
}
// print map
for k := range elementMap {
fmt.Println(k)
}
}
、あなたは心の中で一つのことを維持する必要があります:マップのキーは一意であるので、あなたのスライスが重複している文字列が含まれている場合は、使用してカウントを保持したい場合がありますmap[string]int
:
func main() {
var elements []string
var elementMap map[string]int
elements = []string{"abc", "def", "fgi", "adi", "fgi", "adi"}
// initialize map
elementMap = make(map[string]int)
// increment map's value for every key from slice
for _, s := range elements {
elementMap[s]++
}
// print map
for k, v := range elementMap {
fmt.Println(k, v)
}
}
そして、あなたは常にFUNCでその機能をラップすることができます:
func sliceToStrMap(elements []string) map[string]string {
elementMap := make(map[string]string)
for _, s := range elements {
elementMap[s] = s
}
return elementMap
}
func sliceToIntMap(elements []string) map[string]int {
elementMap := make(map[string]int)
for _, s := range elements {
elementMap[s]++
}
return elementMap
}
を