在Go中将英尺和英寸转换为厘米?

时间:2017-05-20 22:19:26

标签: go type-conversion

我是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

1 个答案:

答案 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)
}