为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
白衣非少年 2021-09-10 18:09:22
我是编程新手,并试图用 Go 编写一个简单的普通程序。package mainimport (    "fmt"    "os")var numbers []float64var sum float64 = 0func 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 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

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

    }


}


查看完整回答
反对 回复 2021-09-10
?
跃然一笑

TA贡献1826条经验 获得超6个赞

它无法转换,因为string和int不兼容。


相反,具有的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

}


查看完整回答
反对 回复 2021-09-10
  • 2 回答
  • 0 关注
  • 838 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信