我经常在makefile中看到"./ ...".我认为这意味着它是当前目录中的所有子文件夹.有人可以确认并向我提供解释此语法的来源吗?
例:
go generate ./...
Run Code Online (Sandbox Code Playgroud)
导入路径模式./...匹配当前目录下的目录中的所有包,但供应商目录中的包除外.
该模式由该go工具实现.该模式不会被make,bash和可能调用该go工具的任何其他工具解释.
导入路径是一种模式,如果它包含一个或多个"..."通配符,每个通配符都可以匹配任何字符串,包括空字符串和包含斜杠的字符串.这样的模式扩展到GOPATH树中找到的所有包目录,其名称与模式匹配.
为了使普通模式更方便,有两种特殊情况.首先,/ ...在模式的末尾可以匹配一个空字符串,以便net/...匹配其子目录中的net和packages,如net/http.其次,任何包含通配符的斜杠分隔模式元素都不会参与vendored包路径中"vendor"元素的匹配,因此./ ...与./vendor或./的子目录中的包不匹配. mycode/vendor,但./vendor/...和./mycode/vendor/... do.但请注意,名为vendor的目录本身包含的代码不是销售包:cmd/vendor是名为vendor的命令,模式cmd/...与之匹配.有关vendoring的更多信息,请参阅golang.org/s/go15vendor.
它也说:
以./或../开头的导入路径称为相对路径.工具链以两种方式支持相对导入路径作为快捷方式.
首先,相对路径可以用作命令行上的简写.如果您在包含导入为"unicode"的代码的目录中工作并且想要运行"unicode/utf8"的测试,则可以键入"go test ./utf8"而不是需要指定完整路径.同样,在相反的情况下,"go test .."将测试"unicode/utf8"目录中的"unicode".也允许相对模式,例如"go test./ ..."来测试所有子目录.有关模式语法的详细信息,请参阅"go help packages".
其次,如果您正在编译不在工作空间中的Go程序,则可以在该程序的import语句中使用相对路径来引用附近的代码,而不是在工作空间中.这样可以很容易地在通常的工作空间之外试验小型多包装程序,但是这些程序不能通过"go install"安装(没有安装它们的工作空间),所以每次它们都从头开始重建建成了.为避免歧义,Go程序无法在工作空间中使用相对导入路径.