gpt4 book ai didi

go - 带有多个文件的包如何在 golang 中工作?

转载 作者:IT老高 更新时间:2023-10-28 13:06:40 30 4
gpt4 key购买 nike

This repo 有 3 个 go 文件,都以“package lumber”开头。要使用这个包,我应该把它放在我的 GOROOT 中,然后简单地

import lumber

在我的程序中。这个包中的变量和类型如何跨多个文件相互连接? go 编译器如何知道首先开始读取哪个文件?

如果我想阅读包,我应该从哪里开始阅读以了解包?这里的具体流程是什么?

最佳答案

详细说明jnml的答案:

当您在代码中使用 import "foo/bar" 时,您并没有引用源文件(位于 $GOPATH/src/foo/bar/)。

相反,您指的是位于 $GOPATH/pkg/$GOOS_$GOARCH/foo/bar.a 的编译包文件。当您构建自己的代码时,编译器发现 foo/bar 包尚未编译(或已过期),它会自动为您执行此操作。

它通过整理* $GOPATH/src/foo/bar 目录中的所有相关源文件并将它们构建到单个 bar.a 文件中来做到这一点,它安装在 pkg 目录中。然后用您自己的程序继续编译。

对所有导入的包以及由这些包导入的包都重复此过程,一直沿依赖链向下。

*) 文件的整理方式取决于文件本身的命名方式以及其中存在的构建标签类型。

要更深入地了解其工作原理,请参阅 build docs .

关于go - 带有多个文件的包如何在 golang 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16933094/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com