有意思的 Go 语言编写的项目 | 青训营笔记

82 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天

在学习 Go 之前,我就接触过 Go。Go 可能也算是个“网红语言”吧,GitHub 上面有不少个人项目都是用 Go 写的。作为一个资深的 Vim 用户,发掘好用的开源工具肯定也是兴趣之一,今天来介绍一下我以前用过的几个 Go 语言写的项目。

FZF

github.com/junegunn/fz…

FZF 是一个用 Go 语言开发的命令行模糊查询工具,可以用来查找文件、历史命令、进程、主机名、书签、git 分支等。它可以与任何命令行工具配合使用,只要它们能生成列表输出。它的源代码托管在 Github 上。

FZF 的作者比较有名。他开发 vim-plug 是现在最流行的 Vim 插件管理工具,也因为他是资深 Vim 用户的原因,FZF 很容易配合 Vim 使用。

LazyGit

github.com/jesseduffie…

Lazygit 是一个用 Go 语言编写的简单的 git 命令终端界面,它可以让你在终端中方便地执行 git 操作,有点像 Sourcetree 的感觉。Lazygit 和其他 git 工具有一些区别,主要是在界面和操作上。Lazygit 是一个终端界面,它可以让你在终端中快速地查看和执行 git 命令,而不需要输入很多参数。其他 git 工具可能是图形界面,或者是基于文本编辑器的插件,或者是基于 git 命令的封装。Lazygit 的优点是它简单、快速、轻量级,而且可以和其他终端工具结合使用。

image.png

LazyDocker

github.com/jesseduffie…

LazyDocker 和 LazyGit 是同一个作者,它是 Docker 和 Docker-Compose 的终端管理工具,用于显示和操作容器的状态、日志、重启、删除、重建等功能。它采用 Go 语言开发,基于 gocui 库实现。它支持键盘操作和鼠标点击,具有简单灵活的终端界面。

LazyDocker 和其他 Docker 图形化管理工具的区别主要有以下几点:

  • LazyDocker 是基于终端的,而不是桌面应用程序,这意味着它可以在任何支持终端的平台上运行,而不需要安装额外的软件。
  • LazyDocker 支持 Docker 和 Docker-Compose,而一些其他工具只支持 Docker。
  • LazyDocker 有一些独特的功能,比如显示容器的 CPU 使用率和内存占用,以及在不同容器之间复制和粘贴文件。
  • LazyDocker 是免费开源的,而一些其他工具可能需要付费或有使用限制。

题外话

Go 语言的简洁和表达力在这些项目中可以说体现得淋漓尽致。它们之中有很多都是我在写 Go 之前就接触到的,在快速入门以后为了学习我也看了它们的源代码。我发现尽管它们的代码数量都不低,但是它们的代码却非常地容易阅读。这让我加深了对 Go 语言的好感。