首页 > 中文版 > gg修改器搜索中文_新版gg修改器文本搜索
gg修改器搜索中文_新版gg修改器文本搜索
  • gg修改器搜索中文_新版gg修改器文本搜索

  • 大小:14.27MB日期:2024-03-29 04:37:18
  • 语言:简体中文系统:Android
绿色无毒,安全可靠!部分设备误报拦截请通过!

应用详情

大家好,今天小编为大家分享关于gg修改器搜索中文_新版gg修改器文本搜索的内容,赶快来一起来看看吧。

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以

上周我开始玩 GoLang,它是一种由 Google 制作的类 C 编译语言,非常轻量和快速,事实上它经常在 Techempower 的基准测试中名列前茅,虽然是非常类 C 的语法,但它确实使用GC 用于内存清理,因此非常适合简单的应用程序。

Go 非常熟悉和容易上手,它让我从头开始学习这门语言,并在 6 天内开发了一个简单的 CLI 应用程序,在我写这篇文章的时候,我还不是这门语言的专家,但我仍然觉得很有信心开始用 Go 开发任何东西。

最后,这不是关于如何使用该语言的教程(go 官方网站上有很多,选择你的口味,它们都很棒),相反,我想概述一下该语言的易用性和实用性,此外,如果您只是离开该语言的教程阶段并想开始实际开发它,那么为什么不像我一样做它并选择一些您想要自动化/实现的任务。

任务

巧合的是,我在业余时间学习 Go 的那一周,工作中有一个不寻常的任务,TL;DR 版本是,有一个包含其他子目录和多个文件的目录,其中一些文件没有 有扩展名,其中一些有一些自定义扩展名(如 .whatever),对于这些情况,我需要将文件扩展名更改为 .txt 或其他已知的文本文件格式。

问题是有数百个文件,因此手动更改它们将是很多工作,替代方法是使用 bash 脚本来做到这一点,我很确定我可以在 bash 中找到一个工具 几个小时。

那为什么要为此制作自定义工具呢?我发现尝试用一种语言解决现实世界的问题是巩固所学知识的绝佳机会,它甚至可以超越您的需求,在我的情况下,我可以制作一些可以在 CLI 中使用自定义参数调用的东西,打印彩色文本,实时显示更改的文件等……

实施

每个 Go 项目都从一个包含 main.go 脚本和 go.mod 文件的文件夹开始,确保您可以在 main.go 脚本中打印 Hello World。

之后,这个工具存在的主要原因是为了改变文件扩展名,所以我只用了 1 次谷歌搜索就找到了 OS 包,在 Go 中,就像大多数语言一样,你可以导入外部库来帮助你的开发,一些这些库中的一个是标准库,是通用内置功能的花哨术语。

具体而言,OS 模块是您将用于任何类型的操作系统交互的东西,例如创建文件、更改文件、执行进程等……

从 OS 模块中的可用方法中,有一个很突出,这正是我需要的,可以更改文件的名称,因为扩展名附加在名称的末尾,我可以更改该部分。

func Rename(oldpath, newpath string) error

从调用此方法的参数来看,它需要带有文件名和扩展名的原始路径(示例:/Users/Me/TestFile.img)和相同的字符串,只是文件名已更改。

然后下一步将是有一些东西可以递归地遍历目录及其子目录,获取文件名以检查它是否需要更改,以及是否调用重命名函数。

func WalkDir(root string, fn fs.WalkDirFunc) error

下面的方法属于文件路径模块,它处理所有路径明智的,这个方法走一个由根字符串指定的路径,并在遇到的每个文件和目录中回调 WalkDirFunc,我只需要一种方法来过滤什么是 文件和什么是子目录

这是我想出的

if info.IsDir() == false {
applyExtensionChange(path, newExt, whitelist, info)
}

info 是当前节点的信息,我们用 IsDir() 判断是否是目录,false 表示是文件,所以我们应用上面的扩展名更改逻辑。

唯一的问题是这个逻辑现在将所有文件都更改为新的扩展名,这不是我想要的。

type Whitelist map[string]bool

就像在 C 中一样,您可以在另一个名称下定义一个众所周知的类型,在这种情况下,我使用带有字符串(文件扩展名)的哈希映射作为键,如果要更改文件扩展名,则返回布尔值,现在是 称为白名单,一个更合适的名称,只需检查白名单是否包含当前文件的文件类型,如果包含,那么我只需更改它。

if whitelist[filepath.Ext(path)] == false {
return
}
//Proceed with renaming logic

一些重构

type ExtChangeJob struct {
Path string
NewExtensionType string
Whitelist Whitelist
}

最基本的实现已经完成,它遍历路径并根据白名单更改文件类型。

是时候开始组织代码了,第一部分是引入一个结构来保存更改扩展任务的细节,这将更容易将信息传递给链中的方法。

参数解析

Flag 模块是另一个用于处理命令行参数的标准库模块。 让这个工具在其他情况下可重用会很好,因此我需要一种动态指定自定义路径、白名单和扩展类型的方法。

最简单的方法是通过命令行界面 (CLI),通过标志,CLI 中的每个命令都可以有额外的参数来改变功能,因此如果我要在终端上运行这个程序,我可以指定路径,如 所以。

file-extension-changer -path=User/Me/TestDir

func flag.String(name string, value string, usage string) *string

上面的方法允许从调用的动作中获取标志参数,它返回我正在寻找的字符串,只需要调用一个额外的方法来解析参数

func flag.Parse()

奖励:彩色文本

实现此功能所需的所有功能都已实现,但是我们可以更进一步并使其更整洁,因为该工具会记录所有更改的文件和终端中的路径,为打印的文本着色不是很好吗? 这样一来,您就可以快速查看正在更改的内容以及经过的路径。

GO 的另一个很酷的功能是向项目中添加外部代码是多么容易,通过快速浏览一些流行的 GitHub 存储库,我发现了这个可以让我更改打印文本颜色,只需简单地将其导入项目中 将该行添加到项目 mod 文件中

require //go-colortext v1.0.0

之后,一个简单的 GO 构建命令就足以让它下载到您的本地机器中,允许您将其引用到任何文件的导入部分以使用它。

import “//go-colortext”

Go auto 为所有包生成文档网页,这有多酷? 您可以免费获得这个,而在其他语言中,您通常必须设置一个外部服务来为您生成这个。

自己看一下

func ChangeColor(fg Color, fgBright bool, bg Color, bgBright bool)

这是更改所有以下输出颜色的包函数,我只是在每个日志之前调用它,为适当的信息设置正确的颜色。

随时留下任何注释或建议。 谢谢阅读! 希望它和我分享它一样充实。

以上就是关于gg修改器搜索中文_新版gg修改器文本搜索的全部内容,感谢大家的浏览观看,如果你喜欢本站的文章可以CTRL+D收藏哦。

相关文章

热门下载

大家还在搜