我有一个整数数组:
nums := []int{1, 2, 3}
Run Code Online (Sandbox Code Playgroud)
我怎样才能从中得到整数 123 呢?
我很欣赏@KelvinS的方法,已经存在一个math.Pow(尽管它处理的是float64s。尽管如此,他的方法打破了你真正追求的,即将每个连续的数字(从右边)提高一个数量级并对数字求和。因此,我能想到的最直接的方法是
func sliceToInt(s []int) int {
res := 0
op := 1
for i := len(s) - 1; i >= 0; i-- {
res += s[i] * op
op *= 10
}
return res
}
func main() {
nums := []int{1, 2, 3}
fmt.Println(sliceToInt(nums))
}
Run Code Online (Sandbox Code Playgroud)
sliceToInt名字不好,但你应该明白这个意思。
https://play.golang.org/p/JS96Nq_so-
尝试尽可能快地实现这一点可能是一种微优化,但如果它恰好位于热路径中,则可能是值得的
BenchmarkPow-8 100000000 13.5 ns/op 0 B/op 0 allocs/op
BenchmarkJoin-8 5000000 272 ns/op 8 B/op 5 allocs/op
BenchmarkBuffer-8 2000000 782 ns/op 160 B/op 8 allocs/op
BenchmarkSliceToInt-8 200000000 8.65 ns/op 0 B/op 0 allocs/op
PASS
Run Code Online (Sandbox Code Playgroud)