十分钟学会用 Go 编写命令行工具


十分钟学会用 Go 编写命令行工具

文章插图
 
前言最近因为项目需要写了一段时间的 Go ,相对于 JAVA 来说语法简单同时又有着一些 Python 之类的语法糖,让人大呼”真香“ 。
十分钟学会用 Go 编写命令行工具

文章插图
 
但现阶段相对来说还是 Python 写的多一些,偶尔还得回炉写点 Java ;自然对 Go 也谈不上多熟悉 。
于是便利用周末时间自己做个小项目来加深一些使用经验 。于是我便想到了之前利用 Java 写的一个博客小工具 。
那段时间正值微博图床大量图片禁止外链,导致许多个人博客中的图片都不能查看 。这个工具可以将文章中的图片备份到本地,还能将图片直接替换到其他图床 。
十分钟学会用 Go 编写命令行工具

文章插图
 
我个人现在是一直在使用,通常是在码字的时候利用 iPic 之类的工具将图片上传到微博图床(主要是方便+免费) 。写完之后再通过这个工具一键切换到 [SM.MS](http://sm.MS) 这类付费图床,同时也会将图片备份到本地磁盘 。
改为用 Go 重写为 cli 工具后使用效果如下:
十分钟学会用 Go 编写命令行工具

文章插图
 
3-min.gif
需要掌握哪些技能之所以选择这个工具用 Go 来重写;一个是功能比较简单,但也正好可以利用到 Go 的一些特点,比如网络 IO、协程同步之类 。
同时修改为命令行工具后是不是感觉更极客了呢 。
再开始之前还是先为不熟悉 Go 的 Javaer 介绍下大概会用到哪些知识点:
  • 使用和管理第三方依赖包(go mod)
  • 协程的运用 。
  • 多平台打包 。
下面开始具体操作,我觉得即便是没怎么接触过 Go 的朋友看完之后也能快速上手实现一个小工具 。
使用和管理第三方依赖
  • 还没有安装 Go 的朋友请参考官网自行安装 。
首先介绍一下 Go 的依赖管理,在版本 1.11 之后官方就自带了依赖管理模块,所以在当下最新版 1.15 中已经强烈推荐使用 。
它的目的和作用与 Java 中的 maven,Python 中的 pip 类似,但使用起来比 maven 简单许多 。
十分钟学会用 Go 编写命令行工具

文章插图
 
根据它的使用参考,需要首先在项目目录下执行 go mod init 用于初始化一个 go.mod 文件,当然如果你使用的是 GoLang 这样的 IDE,在新建项目时会自动帮我们创建好目录结构,当然也包含 go.mod 这个文件 。
在这个文件中我们引入我们需要的第三方包:
module btbgo 1.15require ( github.com/cheggaaa/pb/v3 v3.0.5 github.com/fatih/color v1.10.0 github.com/urfave/cli/v2 v2.3.0)【十分钟学会用 Go 编写命令行工具】我这里使用了三个包,分别是:
  • pb: progress bar,用于在控制台输出进度条 。
  • color: 用于在控制台输出不同颜色的文本 。
  • cli: 命令行工具开发包 。


    推荐阅读