报错:too many arguments to return


func readTxt(data *PostData, filename string) {
    var i int = 0
    f, err := os.Open(filename) //打开文件
    defer f.Close()             //打开文件出错处理
    //var a [15]float64
    if nil == err {
        buff := bufio.NewReader(f) //读入缓存
        for {
            line, err := buff.ReadString('\n') 
            if err != nil || io.EOF == err {
                break
            }
            line = strings.Replace(line, "+", " ", -1)
            //对一行进行处理
            if _, err = fmt.Sscanf(line, "$%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f;",
                &data.Data.ObjId, &data.Data.GpsData[i].Longitude, &data.Data.GpsData[i].Latitude,
                &data.Data.GpsData[i].Speed, &data.Data.GpsData[i].Bearing, &data.Data.HRData[i].HeartRate,
                &data.Data.TimeData[i].Year, &data.Data.TimeData[i].Month, &data.Data.TimeData[i].Day,
                &data.Data.TimeData[i].Hour, &data.Data.TimeData[i].Min, &data.Data.TimeData[i].Sec,
                &data.Data.AccData[i].XAcc, &data.Data.AccData[i].YAcc, &data.Data.AccData[i].ZAcc); err != nil {
                return nil, fmt.Errorf("invalid")
            }
            i++
            //fmt.Println(data)
        }
    }
}
阅读 18.1k
3 个回答
 return nil, fmt.Errorf("invalid")

改成

 return

该函数不需要返回值,数据已经写入data 里了。

func readTxt(data *PostData, filename string) (string, string) {

return被if控制住了,else里也要有return吧。。反正就是肯定要把return运行到就是。。。

go里,函数有返回值则必须声明,而有返回值的函数就必须返回。。。go可是强类型语言啊。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题