Golang代码中的重复项

时间:2015-07-31 12:06:14

标签: go

如何摆脱此代码中的重复项?

我想过使用生成生成代码,但我认为会得到相同的结果。另一方面,我认为使用界面,但不知道如何申请(我知道如何使用它们,但不是在特定情况下)。

package main

import "fmt"

type First struct {
    X int
    Y float64
}

type Second struct {
    I float64
    J int
}

func ListFirsts(db map[string]map[int]interface{}) []First {
    ans := []First{}
    for _, v := range db["Firsts"] {
        ans = append(ans, v.(First))
    }
    return ans
}

func ListSeconds(db map[string]map[int]interface{}) []Second {
    ans := []Second{}
    for _, v := range db["Seconds"] {
        ans = append(ans, v.(Second))
    }
    return ans
}

func main() {
    db := map[string]map[int]interface{}{
        "Firsts": {
            1: First{1, 2},
            2: First{2, 3},
        },
        "Seconds": {
            1: Second{11.2, 2},
            2: Second{2, 3},
        },
    }

    fmt.Println(ListFirsts(db))
    fmt.Println(ListSeconds(db))
}

0 个答案:

没有答案