如何在Golang中将[]字符串转换为[] float64?

时间:2015-01-10 11:02:40

标签: go

我是编程新手,并试图在Go中编写一个简单的平均程序。

package main

import (
    "fmt"
    "os"
)

var numbers []float64
var sum float64 = 0

func main() {

    if len(os.Args) > 1 {

        numbers = os.Args[1:]

    }

    fmt.Println("Numbers are: ", numbers)
    for _, value := range numbers {
        sum += value
    }

}

http://play.golang.org/p/TWNltPO71N

当我构建程序时,我收到了这个错误:

prog.go:15: cannot use os.Args[1:] (type []string) as type []float64 in assignment
[process exited with non-zero status]

那么如何将一片字符串转换为一个浮点数?我可以将转换函数映射到切片吗?

2 个答案:

答案 0 :(得分:6)

您需要使用strconv.ParseFloat函数将字符串转换为float64:

package main

import (
    "fmt"
    "os"
    "strconv"
)

var numbers []float64
var sum float64 = 0

func main() {

    if len(os.Args) <= 1 {
        return
    }

    for _, arg := range os.Args[1:] {
        if n, err := strconv.ParseFloat(arg, 64); err == nil {
            numbers = append(numbers, n)
        }
    }

    fmt.Println("Numbers are: ", numbers)
    for _, value := range numbers {
        sum += value
    }

}

答案 1 :(得分:2)

无法转换,因为stringint不兼容。

不是使用numbers切片,而是使用os.Args[1:]包中的ParseFloat迭代strconv

fmt.Print("Numbers are: ")
for _, arg := range os.Args[1:] {
    fmt.Print(arg, " ")
    value, err := strconv.ParseFloat(arg, 64)
    if err != nil {
        panic(err)
    }
    sum += value
}