标准库— 操作源码之收集go包信息:go/build

标准库— 操作源码之收集go包信息:go/build

在golang标准库中,有那么一类包,它们用于处理go项目目录结构、源码、语法、基本操作等。一般程序中可能用不到这些包,但在go工具链源码中用到了,之所以学习这些标准库,是为了更好的看go工具链的源码。首先我们来看收集go包信息的库:go/build

一、build包概述



该包文档中首先介绍了Go Path。如果对该部分还不清楚,可以看下文档的说明;或者官方其他文档;或者看 Go项目的目录结构。

如果你看过go源码,应该见到过类似这样的包注释:+build ignore。这是编译约束条件(Build Constraints),可以理解为条件编译。关于这部分的更多内容,稍后详细介绍。

二、类型和函数


1、ToolDir变量


var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)

该变量的值是go工具链的路径。6g/6l之类的工具,就在这个路径下

2、ArchChar函数



获得架构的字符表示。在之前的文章中介绍过。比如:x86 32bit用8表示;amd64用6表示等。该函数通过传入goarch,获得对应的架构字符。如:build.ArchChar(runtime.GOARCH)

3、IsLocalImport函数



判断是否为“本地导入“,类似”.”, “..”, “./foo”或者”../foo”。正式项目,一般不建议用本地导入,使用本地导入很多人会说找不到包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值