簡體   English   中英

如何在Golang中將[]字符串轉換為[] 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片,只是遍歷os.Args[1:] ,使用ParseFloatstrconv包。

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM