首页 后端开发 Golang 天 ???的学习去。构建 CLI 应用程序

天 ???的学习去。构建 CLI 应用程序

Aug 16, 2024 pm 04:31 PM

Day ??? of learning go. Building cli apps

为什么是cli?

相对于图形用户界面 (GUI) 工具,我一直更喜欢命令行界面 (CLI) 和终端用户界面 (TUI) 工具。这个项目被恰当地命名为“Phraser”(不为糟糕的命名道歉),是一个命令行应用程序,旨在管理加密钱包的钱包种子短语。我开发这个应用程序是为了创建一种更方便的方式来管理我的加密钱包的种子短语。
它创建一个目录并将短语存储在加密的 JSON 文件中。然后,您可以移动 JSON 文件并将它们存储在您想要的任何位置。

为什么要去?

为了提高我的技能,我选择使用 Go 重写之前用 Python 编写的项目。与需要安装大量依赖项的 Python 版本不同,Go 版本可以编译为单个二进制文件,使其更便携且更省事。此外,Go 以其惊人的速度而闻名(我无法抗拒:))

使用的工具

  • Go v1.22.5(当然)
  • Cobra-cli

安装

您可以在 GitHub 存储库的发布页面上找到预编译的二进制文件(链接位于文章末尾)。

手动安装

如果您愿意,可以克隆存储库并安装依赖项来测试它。
这些说明位于 GitHub 存储库的自述文件中,但我仍会在这里突出显示它们。

用法

Phraser 通过一组简单的命令易于使用。以下是基本概述:

   phraser [command] [flags]
登录后复制

命令

  • completion:为指定的 shell 生成自动补全脚本。
  • 创建:在您的商店中创建钱包。
  • gendoc:为所有命令生成 Markdown 文档。
  • get:检索钱包中存储的数据。
  • init:初始化存储。

选项

  -a, --amount int      amount of phrases to be inputted
  -h, --help            help for phraser
  -s, --store string    name of the store to access
  -t, --toggle          Help message for toggle
  -w, --wallet string   name of the wallet to be created
登录后复制

示例

  1. 初始化一个新商店:
   phraser init --store myStore
登录后复制
  1. 创建一个新钱包:
   phraser create --store myStore --wallet myWallet --amount 12
登录后复制
  1. 检索钱包的助记词:
   phraser get --store --wallet myWallet
登录后复制

结论

这个项目教会了我很多关于类似 Go 的加密/解密、文件处理以及用于构建 CLI 应用程序的 cobra-cli 的知识。欢迎任何反馈和更正。
源代码可以在这里找到

以上是天 ???的学习去。构建 CLI 应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Go语言包导入:带下划线和不带下划线的区别是什么? Go语言包导入:带下划线和不带下划线的区别是什么? Mar 03, 2025 pm 05:17 PM

Go语言包导入:带下划线和不带下划线的区别是什么?

Beego框架中NewFlash()函数如何实现页面间短暂信息传递? Beego框架中NewFlash()函数如何实现页面间短暂信息传递? Mar 03, 2025 pm 05:22 PM

Beego框架中NewFlash()函数如何实现页面间短暂信息传递?

如何编写模拟对象和存根以进行测试? 如何编写模拟对象和存根以进行测试? Mar 10, 2025 pm 05:38 PM

如何编写模拟对象和存根以进行测试?

如何使用跟踪工具了解GO应用程序的执行流? 如何使用跟踪工具了解GO应用程序的执行流? Mar 10, 2025 pm 05:36 PM

如何使用跟踪工具了解GO应用程序的执行流?

Go语言中如何将MySQL查询结果List转换为自定义结构体切片? Go语言中如何将MySQL查询结果List转换为自定义结构体切片? Mar 03, 2025 pm 05:18 PM

Go语言中如何将MySQL查询结果List转换为自定义结构体切片?

如何定义GO中仿制药的自定义类型约束? 如何定义GO中仿制药的自定义类型约束? Mar 10, 2025 pm 03:20 PM

如何定义GO中仿制药的自定义类型约束?

Go语言如何便捷地写入文件? Go语言如何便捷地写入文件? Mar 03, 2025 pm 05:15 PM

Go语言如何便捷地写入文件?

我如何使用衬里和静态分析工具来提高GO代码的质量和可维护性? 我如何使用衬里和静态分析工具来提高GO代码的质量和可维护性? Mar 10, 2025 pm 05:38 PM

我如何使用衬里和静态分析工具来提高GO代码的质量和可维护性?

See all articles