func newSite(s string) (string, int64, float64, error) {
	parts := strings.Split(s, ":")
	if len(parts) == 3 {
		file := parts[0]
		line, intParseErr := strconv.ParseInt(parts[1], 10, 64)
		if intParseErr == nil {
			prob, floatParseErr := strconv.ParseFloat(parts[2], 64)
			if floatParseErr == nil {
				return file, line, prob, nil
			}
		}
	}
	return "", 0, 0, fmt.Errorf("invalid crash site spec '%s'", s)
}
// Parse a crash site spec; return values: line, file, probability, error
Parse a crash site spec; return values: line, file, probability, error
// Parse a crash site spec ; return values : line file probability error
func newSite(s string) (string, int64, float64, error) {
	parts := strings.Split(s, ":")
	if len(parts) == 3 {
		file := parts[0]
		line, intParseErr := strconv.ParseInt(parts[1], 10, 64)
		if intParseErr == nil {
			prob, floatParseErr := strconv.ParseFloat(parts[2], 64)
			if floatParseErr == nil {
				return file, line, prob, nil
			}
		}
	}
	return "", 0, 0, fmt.Errorf("invalid crash site spec '%s'", s)
}
func newSite ( s string ) ( string , int64 , float64 , error ) { parts := strings . Split ( s , " " ) if len ( parts ) == 3 { file := parts [ 0 ] line , intParseErr := strconv . ParseInt ( parts [ 1 ] , 10 , 64 ) if intParseErr == nil { prob , floatParseErr := strconv . ParseFloat ( parts [ 2 ] , 64 ) if floatParseErr == nil { return file , line , prob , nil } } } return " " , 0 , 0 , fmt . Errorf ( " " , s ) }
Parse a crash site spec; return values: line, file, probability, error
Parse a crash site spec ; return values : line file probability error