3 回答
TA贡献1844条经验 获得超8个赞
问题比看起来更简单。你一个转换rune
值的int
与值int(r)
。但是你的代码意味着你想要的ASCII的整数值出(或UTF-8)表示的数字,你可以平凡与获得r - '0'
的rune
,或int(r - '0')
作为int
。请注意,超出范围的符文会破坏该逻辑。
TA贡献2041条经验 获得超4个赞
例如sum += (int(c) - '0') * factor,
package main
import (
"fmt"
"strconv"
"unicode/utf8"
)
func main() {
s := "9780486653556"
var factor, sum1, sum2 int
for i, c := range s[:12] {
if i%2 == 0 {
factor = 1
} else {
factor = 3
}
buf := make([]byte, 1)
_ = utf8.EncodeRune(buf, c)
value, _ := strconv.Atoi(string(buf))
sum1 += value * factor
sum2 += (int(c) - '0') * factor
}
fmt.Println(sum1, sum2)
}
输出:
124 124
TA贡献1830条经验 获得超3个赞
你为什么不只做“字符串(符文)”。
s:="12345678910"
var factor,sum int
for i,x:=range s{
if i%2==0{
factor=1
}else{
factor=3
}
xstr:=string(x) //x is rune converted to string
xint,_:=strconv.Atoi(xstr)
sum+=xint*factor
}
fmt.Println(sum)
- 3 回答
- 0 关注
- 205 浏览
添加回答
举报