登录
首页 >  Golang >  Go问答

在我的 golang 程序中解析 shell 程序中的字节

来源:stackoverflow

时间:2024-03-17 18:12:25 389浏览 收藏

在 Go 程序中,当使用 os/exec 库调用 shell 程序时,得到的输出可能以字节形式呈现。要将字节转换为 float64 类型,需要使用额外的处理步骤。如果直接将字节数组强制转换为 float64,将会出现“无法将(类型 []byte)转换为 float64 类型”的错误。

问题内容

我正在尝试使用 golang (os/exec) 调用 shell 程序,但我得到的输出以字节为单位,我需要将其转换为 float64,但它显示错误?

错误:无法将(类型 []byte)转换为 float64 类型

func cpu_usage_data() (cpu_predict float64, err error) {
     out,err1 := exec.command("/bin/sh","data_cpu.sh").output()
 if err1 != nil {
      fmt.println(err1.error())
    }
  return float64(out), err1
    }

data_cpu.sh 是:

top -b n 1 | egrep -w 'apache2|mysqld|php' | awk '{cpu += $9}END{print cpu/NR}'

解决方案


使用 bytes.bufferstrconv.parsefloat

func Cpu_usage_data() (cpu_predict float64, err error) {
    cmd := exec.Command("/bin/sh", "data_cpu.sh")
    var out bytes.Buffer
    cmd.Stdout = &out
    err = cmd.Run()
    if err != nil {
        fmt.Println(err.Error())
    }
    cpu_predict, err = strconv.ParseFloat(out.String(), 64)
    if err != nil {
        fmt.Println(err.Error())
    }
    return 
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《在我的 golang 程序中解析 shell 程序中的字节》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>