使用Golang编写命令行工具

aside section._1OhGeD · · 3342 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

概要

日常工作有时候需要编写命令行工具,相比Python这样的脚本语言,Golang可以直接编译成二进制文件,运行时不用依赖于环境。同时Golang也支持交叉编译,可以在Mac,Linux等多个环境下执行。

开发准备

Golang需要我们安装Go的开发环境。当前我们可以去 https://golang.google.cn/ 下载最新的Golang环境。
安装了Golang环境后,可能因为国内网络的原因无法下载第三方的包。比较好的方法是借助Go的proxy:https://goproxy.io/

编译运行

使用 go build 来编译源文件,使用 go run来运行源文件。
例如,我们要编译 main.go 文件

go build main.go

依赖管理

Golang从1.11开始有了官方的依赖管理工具Go Modules,详细的入门可以参考这里. 在工程目录下建立一个go.mod文件来管理这个项目的依赖。

一些简单的规则

golang的模块有package的概念, 同一个package的文件是具有可见性。

源文件命名的规则:golang的源文件大都是小写蛇形命名, 比如 hello.go, 而 hello_test.go 则是hello.go的测试代码。

函数规则:文件中的函数以驼峰式命名,首字母大写的函数说明是供外部模块调用的。

常用的模块

  • 如果你要编写的命令行工具需要借助其他的shell命令来实现,就需要用到exec模块

  • 创建命令行工具常常会需要对命令行的参数进行解析,需要用到 flag模块

  • 因为有些处理比较耗时,所以也可能会需要使用Golang的goroutine(协程)特性。

其他编写命令行工具时常用的第三方模块:

其他tips

当使用 main.go 调用其他文件时,会发现函数找不到的问题.
如果使用命令行,可以使用go install代替go build就可以编译了。
如果需要使用goland,可以将 run 和 debug 配置中的 [Run kind] 由 File 改变成 Directory,并且填上 Directory 就可以了。

image.png


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section._1OhGeD

查看原文:使用Golang编写命令行工具

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3342 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传