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]
你有什么不同的做法