func SetGoEnvVariables() error {
	gopath := os.Getenv("GOPATH")
	if resolvedGoPath, err := filepath.EvalSymlinks(gopath); err == nil {
		gopath = resolvedGoPath
	}
	if err := os.Setenv("GOPATH", gopath); err != nil {
		return err
	}
	goroot, err := GoRoot()
	if err != nil {
		return err
	}
	if resolvedGoRoot, err := filepath.EvalSymlinks(goroot); err == nil {
		goroot = resolvedGoRoot
	}
	return os.Setenv("GOROOT", goroot)
}
SetGoEnvVariables sets the values of the GOPATH and GOROOT environment variables to be the correct values with all
symbolic links evaluated. The GOPATH to resolve is determined by using the original value of the GOPATH environment
variable, while the GOROOT to resolve is determined using the GoRoot() function.
package dirs
import (
	"fmt"
	"os"
	"os/exec"
	"path/filepath"
	"strings"
)