大家好, 我是老麦。一头专注 Golang 和 K8s 的胖熊猫。
状态: 未更新
原文链接: https://typonotes.com/posts/2023/03/02/cobra-book/
时间不知不觉到了 3 月, 我们的 DevOpsCamp 也到了 第4期。在前面的内容中, 我尝试通过将 cobra 拆解成一个个功能, 并进行解释和扩展。希望能带领大家逐步进入 Go 开发的世界。
其实这些都不难, 但是由于刚接触到一个未知的东西的时候, 总是有一种茫然无措, 不知道如何下手的烦躁和不安。这个也是我当初入门的时遇到的困境。
希望大家在完成了这部分练习之后, 能自信的回过头来说一句 原来不过如此嘛。
第一步总是最简单的, 但也是最重要的。
本文中, 我们将一起使用 cobra 创建一个最简单的命令。并且使用 Makefile 实现交叉编译的管理。让一切都简单起来。
交互, 总是从数据开始, 到数据结束。
JSON
和 YAML
作为配置管理最常用的两种格式, 另外就是 ini, toml, xml
。尤其是 JSON
, 在 HTTP
请求中基本山更可以是做 默认的 的数据传递格式了。
本文中, 我们将学习如何, (1) 如何读取和写入文件。(2)如何从一种结构转换为另一种结构, 以及一些常用方法和函数命名的变种。
一个好的工具, 一定是简单好用的。
在本文中, 我们将使用 survey
实现命令提示、选择等功能。一方面可以减少用户使用的学习成本, 另一方面减少用户输入可以增加我们工具的健壮性。
项目越大,功能越多,越需要模块化管理。
在本文中, 我们将一起阅读一些文档, 包括官方和社区的。了解 Golang 目录的 命名规则 以及 组合方式。同时展开介绍特殊的 internal
目录。
要致富先修路, 多生孩子多种树。
在本文中, 我们将通过 Cobra 子命令为切入点, 一起学习源码, 讲解 Cobra 是如何组合 链表 实现命令树的。将简单介绍一下 gin 路由树的实现逻辑 与 Cobra 的不同点。
另外, 我们对 gin 进行了二次封装, 模拟 Cobra 的方式实现路由树。
画虎画皮难画骨, 知人知面不知心
本文中, 我们将继续一切学习 Cobra 的源码, 一起找出 Cobra 子命令 真正的父命令, 通过这个案例讲解 Golang 引用类型 的使用陷阱。
磨刀不误砍柴工, 读完硕士再打工
本文是 Cobra 官方页面, 配置你的 Shell 终端, 完成命令自动补全。让操作飞起来。
君子性非异也, 善假于物也。
cobrautils
是我写的一个 cobra 扩展库, 目的是为了通过 Struct
方便 的管理所有 flag 和默认值。
门前大桥下, 游过一群鸭
众所周知, Golang 的接口是鸭子类型。
本文中, 将介绍什么是 鸭子类型?Struct 如何实现接口?以及接口在使用过程中的一些常用方法。
如果愿意一层一层的剥开我的心, 你会发现我心底最深的秘密
上下文 Context 应该是 Go语言 中一个极其重要的 基石 概念了。
本文中, 我们将一起学习 Golang Context 的源码, 一起掌握核心知识 值传递。同时将通过一个案例 着重 说明 值传递 的过程、用法和注意事项。
本次实战练习我们只做一个事情, 用 cobra 写一个 命令行 的 dns 客户端。把我们之前已经掌握了一些基本招式, 运用起来, 形成自己的拳法。
整个脑图,我整理如下。没有思路的朋友可以根据这个脑图进行。
在脑图中, 05 扩展 中有一个 接口定义。最终我们要实现多运营商截图。因此在前期设计和实现的时候, 可以多考虑一下 扩展性 的问题。
补充: 本次 dns 解析上, 我用的是 dnspod, 也就是腾讯云。选择其他大厂也一样, 都有完整的 SDK。
这里有一个很久之前练习写的 tangx/dnsx - Github : https://github.com/tangx/dnsx , 权当参考。
配置档案
删除
大家好, 我是老麦, 我将每天 早上9点 为你分享一篇好文章。