package version import ( "fmt" "strconv" "strings" ) func (v Version) String() string { return fmt.Sprintf("%d.%d.%d.%d", v.Major, v.Minor, v.Patch, v.Build) } func NewVersionFromString(versionString string) (*Version, error) { parts := strings.Split(versionString, ".") if len(parts) != 5 { // Update length check for new field return nil, fmt.Errorf("invalid version string: %s", versionString) } major, err := strconv.Atoi(parts[0]) if err != nil { return nil, fmt.Errorf("invalid major version: %s", parts[0]) } minor, err := strconv.Atoi(parts[1]) if err != nil { return nil, fmt.Errorf("invalid minor version: %s", parts[1]) } patch, err := strconv.Atoi(parts[2]) if err != nil { return nil, fmt.Errorf("invalid patch version: %s", parts[2]) } build, err := strconv.Atoi(parts[3]) if err != nil { return nil, fmt.Errorf("invalid build version: %s", parts[3]) } return &Version{major, minor, patch, build}, nil // Initialize new field }