Я столкнулся с этой проблемой несколько раз, когда захотел использовать ключи карт аналогичным образом, но значения на картах разные. Я думал, что могу написать функцию, которая использует тип ключа, который я хочу с интерфейсом {}, как тип значения, но он не работает.Значение общей карты Go Lang
func main() {
mapOne := map[string]int
mapTwo := map[string]double
mapThree := map[string]SomeStruct
useKeys(mapOne)
}
func useKeys(m map[string]interface{}) {
//something with keys here
}
Не уверены, что если есть элегантный способ сделать это, я просто чувствую талии полных переписываний простых вещей для различных значений.
Если вы знаете фронт каких значений вы обеспокоены, вы можете написать один 'func keys (m interface {})' (или функция, которая дает клавиши поэтапно через канал или путем вызова функции) и выполняет [переключатель типа] (http://golang.org/ref/spec#Type_switches) в Это. Но я склонен просто повторять цикл везде, где вы хотите использовать все ключи, а не только для общих «писать Go Go Go», а для большей проверки типа компиляции. – twotwotwo