go - 如何在没有代码重复的情况下初始化映射?

标签 go types code-duplication

我有一个名为game的结构类型,如下所示:

type game struct {
    commands map[string]*command
    // ...
}

我想在init函数中的这种类型的结构中初始化 map 。我这样做

func (game *game) init() {
    game.commands = make(map[string]*command)
    // ...
}

我认为,有一些代码重复。如果我只能声明一次(map[string]*command)类型,那就太好了。有没有办法做到这一点?我尝试使用反射,但是它似乎不起作用,因为make buildin接受类型而不是值。

最佳答案

如果您担心重复map[string]*command两次是重复的,则可以从中定义一个新类型。

type commandsMap map[string]*command

type game struct {
    commands commandsMap 
    // ...
}

func (game *game) init() {
    game.commands = make(commandsMap)
    // ...
}

关于go - 如何在没有代码重复的情况下初始化映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60074719/

相关文章:

haskell - 无法将预期类型 `Int' 与实际类型 `m0 Int' 匹配

java - 在函数重载的情况下,JVM 如何找到要调用的方法(具有最接近匹配的参数)

http - 我如何跟踪golang中的上传进度

go - 如果接口(interface)类型的变量是实现它的某种结构类型,如何检查 Go?

mysql - 使用 TLS 与 MySQL 连接字符串连接不良

php - 避免 php 和 javascript 之间的重复代码

python - 代码味道 - if/else 构造

go - 无法使用客户端提供的 id_token 在服务器中使用 Oauth2 获取用户个人资料信息

java - Haskell 可以在编译时捕获哪些类型的错误,而 Java 不能?

c++ - 防止循环内外的代码重复