map struct golang中counter的最佳实践

Best practice of counter in map struct golang

我的代码不干净。我想在 NameLike 的结构中增加 Counter 但我认为这没有效果。

package main

import "fmt"

type NameLike struct {
    Name    string
    Counter int
}

func main() {
    sosmed := make(map[string]NameLike)

    sosmed["rizal"] = NameLike{"Rizal Arfiyan", 10}

    for i := 1; i < 10; i++ {
        sosmed["rizal"] = NameLike{
            Counter: sosmed["rizal"].Counter + 1,
        }
    }

    fmt.Println(sosmed)
}

关于这段代码,你有什么想法让它变得干净吗?

sosmed["rizal"] = NameLike{
    Counter: sosmed["rizal"].Counter + 1,
}

这个 link 为 Golang Playground

您可以采用几种方法来简化此代码。

当前地图超过NameLike。如果你通过引用传递,你可以稍微简化一下:

package main

import "fmt"

type NameLike struct {
    Name    string
    Counter int
}

func main() {
    sosmed := make(map[string]*NameLike)
    sosmed["rizal"] = &NameLike{"Rizal Arfiyan", 10}

    for i := 1; i < 10; i++ {
    sosmed["rizal"].Counter++
    }

    fmt.Println(sosmed["rizal"])
}

https://play.golang.org/p/-xvCJyqQ6V0