我正在使用带有golang的外壳来访问apache日志文件并获取一些数据。首先,我曾经将输出直接写到文件中并且可以正常工作,但是现在我需要获取输出并直接在程序中使用它。而且我需要将其转换为float64。我尝试将其转换为字符串,然后转换为float64,但无法正常工作吗?
func Mem_usage_data(j int) (Mem_predict float64, err error) {
awkPart := fmt.Sprintf("awk '{print $%d/1024}'", j)
out1, err := exec.Command("bash", "-c", "tail -n 1 /var/log/apache2/access.log| "+awkPart+" ").Output()
fmt.Println("memory usage is", out1)
s1 := string(out1)
v1, err1 := strconv.ParseFloat(s1, 64)
if err1 != nil {
fmt.Println(err)
}
if err != nil {
fmt.Println(err)
}
return v1, err
}
当我打印出out1时,我得到了类似的信息[48 46 49 50 48 49 49 55 10]。请您帮忙如何在out1中获得准确的输出以及如何将其转换为float64?
答案 0 :(得分:2)
转换失败可能是因为s1
上有一些空格或换行符。进行转换之前,请先尝试修剪它。使用strings.TrimSpace()
来实现。
v1, err1 := strconv.ParseFloat(strings.TrimSpace(s1), 64)