Categorygithub.com/issue9/source
modulepackage
0.12.5
Repository: https://github.com/issue9/source.git
Documentation: pkg.go.dev

# README

source Go license codecov Go version PkgGoDev

source 模块提供了一些与源码相关的功能

  • DumpGoSource 输出并格式化 Go 的源代码;
  • CurrentFile 相当于部分语言的 __FILE__
  • CurrentDir 相当于部分语言的 __DIR__
  • CurrentLine 相当于部分语言的 __LINE__
  • CurrentFunction 相当于部分语言的 __FUNCTION__
  • Stack 返回调用者的堆栈信息;
  • ModFile 文件或目录 p 所在模块的 go.mod 内容;
  • ModDir 向上查找 p 所在的目录的 go.mod;
  • PackagePath 文件或目录 p 所在 Go 文件的导出路径;

安装

go get github.com/issue9/source

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

# Packages

Package codegen 简单的代码生成工具.

# Functions

CurrentDir 获取`调用者`所在的目录 相当于部分语言的 __DIR__.
CurrentFile 获取`调用者`所在的文件 相当于部分语言的 __FILE__.
CurrentFunction 获取`调用者`所在的函数名 相当于部分语言的 __FUNCTION__.
CurrentLine 获取`调用者`所在的行 相当于部分语言的 __LINE__.
CurrentLocation 获取`调用者`当前的位置信息.
CurrentPath 获取`调用者`所在目录的路径 类似于部分语言的的 __DIR__ + "/" + path.
DumpStack 将调用的堆栈信息写入 w skip 需要忽略的内容。 - 1 表示 Stack 自身; - 2 表示 Stack 的调用者,以此类推; ignoreRuntime 表示是否不显示 runtime 下的系统调用信息; msg 表示需要输出的额外信息;.
ModDir 向上查找 p 所在的目录的 go.mod.
ModFile 文件或目录 p 所在模块的 go.mod 内容 从当前目录开始依次向上查找 go.mod,从其中获取 go.mod 文件位置,以及文件内容的解析。.
PkgPath 文件或目录 p 的导出路径 会向上查找 go.mod,根据 go.mod 中的 module 结合当前目录组成当前目录的导出路径。.
PkgSourceDir 查找包 pkgPath 的源码目录 如果 pkgPath 是标准库的名称,如 encoding/json 等,则返回当前使用的 Go 版本对应的标准库地址。 其它情况则从 modDir 指向的 go.mod 中查找 require 或是 replace 字段的定义, 并根据这些定义找到其指向的源码路径。 如果 modDir 中不存在 go.mod 会尝试向上一级目录查找。 pkgPath 需要查找的包路径,如果指向的是模块下的包级别的导出路径,则会尝试使用 [strings.HasPrefix] 与 require 指令进行对比; modDir go.mod 所在的目录,将在该文件中查找 pkgPath 指定的目录; replace 是否考虑 go.mod 中的 replace 指令的影响; 如果找不到,会返回 [fs.ErrNotExist] NOTE: 这并不会检测 dir 指向目录是否真实且准确。.
Stack 返回调用堆栈信息 skip 需要忽略的内容。 - 1 表示 Stack 自身; - 2 表示 Stack 的调用者,以此类推; msg 表示需要输出的额外信息;.