在cunston类型中使用插入属性

问题描述 投票:0回答:1

我正在编写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);

我需要功能反向返回反向emonth。例如:month = {“ Jan”:1 ...“ Dec”:12}和month.Reverse()返回{1:“ Jan” .... 12:“ Dec”}

dictionary go iterator reverse golang-migrate
1个回答
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())
}
© www.soinside.com 2019 - 2024. All rights reserved.