Go:映射中的整数始终为0

Go:映射中的整数始终为0,go,Go,我试图使用map[string]int对Go中的测试中的元素进行计数,但是我的map中的值总是0: var counts = make(map[string]int) func mockCheckTokenExists(counts map[string]int) func(token string) (bool, error) { return func(token string) (bool, error) { fmt.Println("count: ", coun

我试图使用
map[string]int
对Go中的测试中的元素进行计数,但是我的map中的值总是
0

var counts = make(map[string]int)

func mockCheckTokenExists(counts map[string]int) func(token string) (bool, error) {
    return func(token string) (bool, error) {
        fmt.Println("count: ", counts[token])

        if token == tokenPresent0Times {
            return false, nil
        } else if token == tokenPresent1Times && counts[tokenPresent1Times] == 1 {
            return false, nil
        }
        counts[token]++;
        return true, nil
    }
}
此函数返回的函数作为参数传递给另一个函数


打印每次呼叫的计数时,它们始终为0。此代码有什么问题?

您没有向我们提供可复制的示例:

这似乎奏效了

package main

import "fmt"

var counts = make(map[string]int)

var tokenPresent0Times, tokenPresent1Times string

func mockCheckTokenExists(counts map[string]int) func(token string) (bool, error) {
    return func(token string) (bool, error) {
        fmt.Println("count: ", counts[token])
        if token == tokenPresent0Times {
            return false, nil
        } else if token == tokenPresent1Times && counts[tokenPresent1Times] == 1 {
            return false, nil
        }
        counts[token]++
        return true, nil
    }
}

func main() {
    fn := mockCheckTokenExists(counts)
    fn("atoken")
    fn("atoken")
    fmt.Println(counts)
}
输出:

count:  0
count:  1
map[atoken:2]
你有什么不同的做法