登录
首页 >  Golang >  Go问答

初始化地图的方法,实现代码不重复

来源:stackoverflow

时间:2024-03-02 20:39:24 224浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《初始化地图的方法,实现代码不重复》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

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

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

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

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

正如我所认为的,存在一些代码重复。如果我可以只声明一次 (map[string]*command) 类型,那就太好了。有没有办法做到这一点?我尝试使用 reflect,但它似乎不起作用,因为 makebuiltin 采用类型而不是值。


解决方案


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

type commandsmap map[string]*command

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

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

这里没有代码重复。代码重复是指代码中有多个点执行相同的操作。 话虽这么说,您可以保留代码原样,也可以使用构造函数,它的好处是限制您键入的初始化位置,而且恕我直言,这也是一种更简洁的方法。

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

func game() *game {
   return &game{commands: make(map[string]*command)}
}

这样,当您需要 game 对象时,您就可以这样做

gameObject := game()

然后像平常一样使用地图方法(或者您也可以为此创建一个实用程序方法)

以上就是《初始化地图的方法,实现代码不重复》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>