如何在 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
}
}
无法转换,因为string
和int
不兼容。
不用 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
}
我是编程新手,正在尝试用 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
}
}
无法转换,因为string
和int
不兼容。
不用 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
}