package source import ( "runtime" "strconv" "strings" ) // GoVersionLessThan returns true if runtime.Version() is semantically less than // version major.minor. Returns false if a release version can not be parsed from // runtime.Version(). func GoVersionLessThan(major, minor int64) bool { version := runtime.Version() // not a release version if !strings.HasPrefix(version, "go") { return false } version = strings.TrimPrefix(version, "go") parts := strings.Split(version, ".") if len(parts) < 2 { return false } rMajor, err := strconv.ParseInt(parts[0], 10, 32) if err != nil { return false } if rMajor != major { return rMajor < major } rMinor, err := strconv.ParseInt(parts[1], 10, 32) if err != nil { return false } return rMinor < minor }