我是Go的新手,我对人体高度从英尺/英寸到厘米的转换有点困惑。
如何以有效的方式将一个看起来像5'2''
的字符串转换为厘米int?
编辑: 经过一些测试后,我最终得到了这个解决方案。如何改进?
height := strings.Split("5'2''", "'")
heightfeet,err :=strconv.ParseFloat(height[0],10)
heightinch,err :=strconv.ParseFloat(height[1],10)
heightcm :=heightfeet*30.48+heightinch*2.54
答案 0 :(得分:2)
我觉得你的方法很好,但是,如果你真的想确保只提取整数并使用常量,请看看我设置的Go Playground。
package main
import (
"fmt"
"regexp"
"strconv"
)
func main() {
//Defining our constants
const cm1 = 30.48
const cm2 = 2.54
//Slice to contain parsed ints
var parsedTokens []float64
feet := "5'2''"
//Regex to extract only integers
reg := regexp.MustCompile("[0-9]+")
filtered:= reg.FindAllString(feet, -1)
//Parse each value v in filtered and append it into parsedTokens
for _, v := range filtered {
k, _ := strconv.ParseFloat(v, 64)
parsedTokens = append(parsedTokens, k)
}
//157.48000000000002
fmt.Println(parsedTokens[0]*cm1 + parsedTokens[1]*cm2)
}