package octal import ( "errors" "math" ) // ParseOctal takes a string representation of an octal number // and returns the decimal value of that number, or an error if it // was unparseable as an octal number func ParseOctal(v string) (int64, error) { var ret float64 octLen := float64(len(v)) for i := range v { octLen-- switch { case v[i] > 47 && v[i] < 56: ret = ret + float64(v[i]-48)*math.Pow(8, octLen) default: return 0, errors.New("Unparseable as octal") } } return int64(ret), nil }