如何在 Golang 中将 []string 转换为 []float64?

How to convert []string to []float64 in Golang?

我是编程新手,正在尝试用 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]

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

您需要使用 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
    }

}

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

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

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
}