Используйте свойства interator в типе cunston
Я писал код Go, где я создал тип, используя базовую карту [string] int, и мне нужно создать метод, который возвращает карту, меняя ключ и значение. Я начал писать код, но не могу повторить созданный мной тип.
Пока что я сделал следующий код:
package constants
type Month map[string]int;
// LongMonth is a relationship with string and date value (int)
var LongMonth = Month{
"Janary":1,
"February":2,
"March":3,
"April":4,
"May":5,
"June": 6,
"July": 7,
"August": 8,
"September": 9,
"Octuber": 10,
"Novenber": 11,
"Decenber": 12,
}
// ShortMonth is a relationship with a resume string and date value (int)
var ShortMonth = Month{
"Jan":1,
"Feb":2,
"Mar":3,
"Apr":4,
"May":5,
"Jun": 6,
"Jul": 7,
"Aug": 8,
"Sep": 9,
"Oct": 10,
"Nov": 11,
"Dec": 12,
}
func (m* Month) Reverse() map[int]string {
n:=make(map[int]string);
for k, v := range m {
n[v] = k
}
return n
};
// LongMonthReverse is a relationship with string and date value (int)
// var LongMonthReverse = reverseMonth(LongMonth);
// ShortMonthReverse is a relationship with string and date value (int)
// var ShortMonthReverse = reverseMonth(ShortMonth);
Мне нужна функция Reverse return the revers emonth. Пример: month = {"Jan": 1..."Dec": 12} и month.Reverse() возвращает {1: "Jan"....12: "Dec"}
1 ответ
Решение
Вы не можете перебирать указатель или изменить интерфейс метода func (m* Month) Reverse() map[int]string
к func (m Month) Reverse() map[int]string
или вам нужно использовать *m
Внутри Reverse()
package main
import "fmt"
type Month map[string]int
// LongMonth is a relationship with string and date value (int)
var LongMonth = Month{
"Janary":1,
"February":2,
"March":3,
"April":4,
"May":5,
"June": 6,
"July": 7,
"August": 8,
"September": 9,
"Octuber": 10,
"Novenber": 11,
"Decenber": 12,
}
// ShortMonth is a relationship with a resume string and date value (int)
var ShortMonth = Month{
"Jan":1,
"Feb":2,
"Mar":3,
"Apr":4,
"May":5,
"Jun": 6,
"Jul": 7,
"Aug": 8,
"Sep": 9,
"Oct": 10,
"Nov": 11,
"Dec": 12,
}
func (m* Month) Reverse() map[int]string {
n:=make(map[int]string)
// this is the fix
for k, v := range *m {
n[v] = k
}
return n
}
func main() {
fmt.Println(ShortMonth.Reverse())
}