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 的实现.applyrewrites,rewrites
参数是一个以 ; 分隔的重写列表。
// 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删除信息的详细内容,更多请关注编程网其它相关文章!