首页 >后端开发 >Golang >Go Build删除信息

Go Build删除信息

王林
王林转载
2024-02-10 15:00:111243浏览

Go Build删除信息

php小编百草Go Build是一款功能强大的信息删除工具,它可以帮助用户快速、高效地删除各类信息。无论是删除无用信息、清理垃圾邮件、擦除个人隐私,还是清除浏览历史记录,Go Build都能轻松应对。借助其智能算法,用户只需简单几步操作,即可完成信息删除任务。Go Build不仅操作简单,而且安全可靠,保护用户的隐私不受侵犯。无论是个人用户还是企业用户,Go Build都是一个不可或缺的工具,让信息删除变得更加便捷高效。

问题内容

我已经可以使用Go Build删除项目当前目录信息,也可以删除Gopath信息,如下,我现在只能单独删除其中一个

go build -gcflags“all=-trimpath=${GOPATH}”-asmflags“all=-trimpath=${GOPATH}”

但我不知道如何同时删除它们,我不知道如何组合它

在 Windows 上,我尝试这个

go build -gcflags“all=-trimpath=%CD%” -asmflags“all=-trimpath=%CD%” -gcflags“all=-trimpath=%GOPATH%” -asmflags“all=-trimpath=%” GOPATH%"

不起作用

最终结果

@ZekeLu,答案是正确的。

我想解释一下发生了什么,我本来希望去掉GOROOT信息,但是我写了GOPATH,所以我以为@ZekeLu的第二个答案是错误的,现在我修改并测试了,没有问题,两个答案都对 p>

解决方法

尝试这个命令:

go build -trimpath

这是 go 命令的 -trimpath 标志的文档

-修剪路径

从生成的可执行文件中删除所有文件系统路径。 记录的文件名而不是绝对文件系统路径 将开始模块路径@版本(使用模块时), 或普通导入路径(使用标准库或 gopath 时)。

如果你只想删除一些前缀,你可以这样做:

go build -gcflags "all=-trimpath=%cd%;%gopath%" -asmflags "all=-trimpath=%cd%;%gopath%"

编译命令asm 命令 调用 objabi.applyrewrites 来修剪路径。根据 objabi 的实现.applyrewritesobjabi.applyrewrites 来修剪路径。根据 objabi 的实现.applyrewritesrewritesrewrites 参数是一个以 ; 分隔的重写列表。

// ApplyRewrites returns the filename for file in the given directory,
// as rewritten by the rewrites argument.
//
// The rewrites argument is a ;-separated list of rewrites.
// Each rewrite is of the form "prefix" or "prefix=>replace",
// where prefix must match a leading sequence of path elements
// and is either removed entirely or replaced by the replacement.
func ApplyRewrites(file, rewrites string) (string, bool) {
    start := 0
    for i := 0; i <= len(rewrites); i++ {
        if i == len(rewrites) || rewrites[i] == ';' {
            if new, ok := applyRewrite(file, rewrites[start:i]); ok {
                return new, true
            }
            start = i + 1
        }
    }

    return file, false
}

以上是Go Build删除信息的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除