# In GOPATH mode, vendored packages can replace std packages. env GO111MODULE=off cd vend/hello go test -v stdout TestMsgInternal stdout TestMsgExternal # In module mode, they cannot. env GO111MODULE=on ! go test -mod=vendor stderr 'undefined: strings.Msg' -- vend/hello/go.mod -- module vend/hello go 1.16 -- vend/hello/hello.go -- package main import ( "fmt" "strings" // really ../vendor/strings ) func main() { fmt.Printf("%s\n", strings.Msg) } -- vend/hello/hello_test.go -- package main import ( "strings" // really ../vendor/strings "testing" ) func TestMsgInternal(t *testing.T) { if strings.Msg != "hello, world" { t.Fatalf("unexpected msg: %v", strings.Msg) } } -- vend/hello/hellox_test.go -- package main_test import ( "strings" // really ../vendor/strings "testing" ) func TestMsgExternal(t *testing.T) { if strings.Msg != "hello, world" { t.Fatalf("unexpected msg: %v", strings.Msg) } } -- vend/vendor/strings/msg.go -- package strings var Msg = "hello, world"