// Copyright 2023 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package gover import ( "internal/goversion" "runtime" "strconv" ) // TestVersion is initialized in the go command test binary // to be $TESTGO_VERSION, to allow tests to override the // go command's idea of its own version as returned by Local. var TestVersion string // Local returns the local Go version, the one implemented by this go command. func Local() string { v, _ := local() return v } // LocalToolchain returns the local toolchain name, the one implemented by this go command. func LocalToolchain() string { _, t := local() return t } func local() (goVers, toolVers string) { toolVers = runtime.Version() if TestVersion != "" { toolVers = TestVersion } goVers = FromToolchain(toolVers) if goVers == "" { // Development branch. Use "Dev" version with just 1.N, no rc1 or .0 suffix. goVers = "1." + strconv.Itoa(goversion.Version) toolVers = "go" + goVers } return goVers, toolVers }