实用的Go语言开发工具及使用示例

目录
  • 前言
  • json-to-go
  • yaml-to-go
  • table-to-go
    • 命令行调用
    • Go 代码调用

前言

孙悟空在花果山称王的时候,特意去了一趟东海,在那里淘到了如意金箍棒。因为身为一个山大王,怎么能没有一件趁手的兵器呢?

作为程序员的我们也一样,除了我们的傍身武器 Ctrl C + V 之外,还要不停的补充我们的武器库。不仅要把 Ctrl C + V 用的高级,更要用的恰到好处。

今天介绍三款小工具,分别可以将 jsonyaml 和 table 转成 Go 的 struct。下次再碰到这样的转换场景,再也不用皱眉挠头了,一键轻松搞定。

前两个直接在线转换,最后一个需要安装一个库,但也很方便。

json-to-go

地址:https://mholt.github.io/json-to-go/

输入:

[
    {
        "input_index": 0,
        "candidate_index": 0,
        "delivery_line_1": "1 N Rosedale St",
        "components": {
            "primary_number": "1",
            "street_predirection": "N",
            "street_name": "Rosedale",
            "street_suffix": "St",
            "city_name": "Baltimore",
            "state_abbreviation": "MD"
        }
    }
]

输出:

type AutoGenerated []struct {
    InputIndex     int    `json:"input_index"`
    CandidateIndex int    `json:"candidate_index"`
    DeliveryLine1  string `json:"delivery_line_1"`
    Components     struct {
        PrimaryNumber      string `json:"primary_number"`
        StreetPredirection string `json:"street_predirection"`
        StreetName         string `json:"street_name"`
        StreetSuffix       string `json:"street_suffix"`
        CityName           string `json:"city_name"`
        StateAbbreviation  string `json:"state_abbreviation"`
    } `json:"components"`
}

yaml-to-go

地址:https://zhwt.github.io/yaml-to-go/

输入:

image: golang:latest
before_script:
  - mkdir -p $GOPATH/src/$(dirname $REPO_NAME)
  - ln -svf $CI_PROJECT_DIR $GOPATH/src/$REPO_NAME
  - cd $GOPATH/src/$REPO_NAME
stages:
  - test
  - build
  - deploy
format:
  stage: test
  script:
    - go fmt $(go list ./... | grep -v /vendor/)
    - go vet $(go list ./... | grep -v /vendor/)
    - go test -race $(go list ./... | grep -v /vendor/)

输出:

type AutoGenerated struct {
    Image        string   `yaml:"image"`
    BeforeScript []string `yaml:"before_script"`
    Stages       []string `yaml:"stages"`
    Format       struct {
        Stage  string   `yaml:"stage"`
        Script []string `yaml:"script"`
    } `yaml:"format"`
}

table-to-go

地址https://github.com/gohouse/converter

假设有这样一张表:

CREATE TABLE `prefix_user` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Email` varchar(32) NOT NULL DEFAULT '' COMMENT '邮箱',
  `Password` varchar(32) NOT NULL DEFAULT '' COMMENT '密码',
  `CreatedAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'

使用方式分两种,分别是命令行调用和写 Go 代码:

命令行调用

1、下载对应平台的可执行文件, 下载地址:

https://github.com/gohouse/converter/releases

2、命令行执行:

./table2struct-linux.v0.0.3.bin -file model.go -dsn xxx -table user

3、参数说明:

-dsn            string 数据库dsn配置
-enableJsonTag  bool 是否添加json的tag
-file           string 保存路径
-packageName    string 包名
-prefix         string 表前缀
-realNameMethod string 结构体对应的表名
-table          string 要迁移的表
-tagKey         string tag的key

Go 代码调用

安装库:

go get github.com/gohouse/converter

代码:

package main
import (
    "fmt"
    "github.com/gohouse/converter"
)
func main() {
    // 初始化
    t2t := converter.NewTable2Struct()
    // 个性化配置
    t2t.Config(&converter.T2tConfig{
        // 如果字段首字母本来就是大写, 就不添加tag, 默认false添加, true不添加
        RmTagIfUcFirsted: false,
        // tag的字段名字是否转换为小写, 如果本身有大写字母的话, 默认false不转
        TagToLower: false,
        // 字段首字母大写的同时, 是否要把其他字母转换为小写,默认false不转换
        UcFirstOnly: false,
        //// 每个struct放入单独的文件,默认false,放入同一个文件(暂未提供)
        //SeperatFile: false,
    })
    // 开始迁移转换
    err := t2t.
        // 指定某个表,如果不指定,则默认全部表都迁移
        Table("user").
        // 表前缀
        Prefix("prefix_").
        // 是否添加json tag
        EnableJsonTag(true).
        // 生成struct的包名(默认为空的话, 则取名为: package model)
        PackageName("model").
        // tag字段的key值,默认是orm
        TagKey("orm").
        // 是否添加结构体方法获取表名
        RealNameMethod("TableName").
        // 生成的结构体保存路径
        SavePath("/Users/fizz/go/src/github.com/gohouse/gupiao/model/model.go").
        // 数据库dsn,这里可以使用 t2t.DB() 代替,参数为 *sql.DB 对象
        Dsn("root:root@tcp(localhost:3306)/test?charset=utf8").
        // 执行
        Run()
    fmt.Println(err)
}

输出:

package model
import "time"
type User struct {
    Id         int     `json:"Id" orm:"Id"`
    Email      string  `json:"Email" orm:"Email"`           // 邮箱
    Password   string  `json:"Password" orm:"Password"`     // 密码
    CreatedAt  string  `json:"CreatedAt" orm:"CreatedAt"`
}
func (*User) TableName() string {
    return "user"
}

收藏吧!希望你用到的时候还能想起它。

文章中的脑图和源码都上传到了 GitHub,有需要的同学可自行下载。

地址:https://github.com/yongxinz/gopher/tree/main/blog

以上就是实用的Go语言开发工具及使用示例的详细内容,更多关于Go语言开发工具的资料请关注我们其它相关文章!

(0)

相关推荐

  • go语言开发环境配置(sublime text3+gosublime)

    目录 1.sublime text 3安装 2.安装Package Control(sublime的插件管理) 3.安装gosublime 开始go语言开发时,网上google了下go的开发工具,大都推荐 sublime text3+gosublime.但是实际操作中gosublime不能直接安装,需要自己手动安装.将自己的安装过程整理一下. 1.sublime text 3安装 下载地址:https://www.sublimetext.com/3 或本地下载地址 我选择的是window安装包

  • Go语言开发redis封装及简单使用详解

    目录 go redis 集合操作--sadd 安装redigo 带密码的redis操作 批量添加 无密码redis操作 redis封装包 参考 go redis 集合操作--sadd redis的go语言包,我们使用官方推荐的redigo,https://github.com/garyburd/redigo 安装redigo $ go get github.com/garyburd/redigo 带密码的redis操作 package main import ( "log" "

  • golang的基础语法和常用开发工具详解

    golang的基础语法 golang的基础语法和其他语言大部分都差别不大,如果我们有学习过其他语言,比如JavaScript,php,java,python等,有其他语言的语法基础,那么我们学习golang将更容易上手.那我们直接开始介绍golang的语法吧. 注释 注释分单行注释和多行注释.golang的注释和其他的开发语言的注释是一样的.双斜杠表示单行注释,/**/表示多行注释. // 单行注释这么开头 /* 多行注释 */ 定义包名 一般来说,使用开发工具的时候,包名是不需要手动输入的,开

  • Go语言HTTPServer开发的六种方式小结

    目录 第一种 第二种 第三种 第四种 第五种 第六种 学完了​​net/http​​和​​fasthttp​​两个HTTP协议接口的客户端实现,接下来就要开始Server的开发,不学不知道一学吓一跳,居然这两个库还支持Server的开发,太方便了.相比于Java的HTTPServer开发基本上都是使用Spring或者Springboot框架,总是要配置各种配置类,各种​handle​​对象.Golang的Server开发显得非常简单,就是因为特别简单,或者说没有形成特别统一的规范或者框架,我发现

  • Go语言集成开发环境IDE详细安装教程

    目录 1. 为什么使用 Go+ IDE? 2. IDE 的安装与配置 2.1 安装 VSCode 2.2 安装 Go+ 扩展插件 3. 使用 IDE 编辑和调试 Go+ 程序 3.1 创建 Go+ 项目目录 3.2 新建和编辑 Go+ 程序 3.3 配置 launch.json 文件 3.4 运行 Go+ 程序 main.gop 4. 总结 Go+ 语言的安装和环境配置有些复杂,官方教程也没有写的很详细. 通过控制台编写和运行 Go+ 程序很不方便.本文从零开始,详细介绍 Go+ 集成开发环境(

  • 实用的Go语言开发工具及使用示例

    目录 前言 json-to-go yaml-to-go table-to-go 命令行调用 Go 代码调用 前言 孙悟空在花果山称王的时候,特意去了一趟东海,在那里淘到了如意金箍棒.因为身为一个山大王,怎么能没有一件趁手的兵器呢? 作为程序员的我们也一样,除了我们的傍身武器 Ctrl C + V 之外,还要不停的补充我们的武器库.不仅要把 Ctrl C + V 用的高级,更要用的恰到好处. 今天介绍三款小工具,分别可以将 json,yaml 和 table 转成 Go 的 struct.下次再碰

  • Go语言开发环境搭建与初探(Windows平台下)

    Go语言开发环境的搭建(Windows) Windows下的Go语言开发安装包 官方下载地址: https://code.google.com/p/go/downloads/list 我们下载地址:http://www.jb51.net/softs/237132.html Go语言中文官网(有相关参考和文档) http://zh.golanger.com/ 方法/步骤 1.在Go语言的Google代码项目上下载Windows下的Go语言开发包(下载地址见工具).有zip压缩版和msi安装版两个按

  • [JAVA]十四种Java开发工具点评

    在计算机开发语言的历史中,从来没有哪种语言象Java那样受到如此众多厂商的支持,有如此多的开发工具,Java菜鸟们如初入大观园的刘姥姥,看花了眼,不知该何种选择.的确,这些工具各有所长,都没有绝对完美的,就算是老鸟也很难做出选择.在本文中我简要介绍了常见的十四种Java开发工具的特点,管中窥"器",希望能对大家有所帮助. 1.JDK (Java Development Kit) 2.Java Workshop 3.NetBeans 与Sun Java Studio 5 4.Borlan

  • 再推荐十款免费的php开发工具

    下面介绍10个免费.强大的PHP编辑器/开发工具.这些编辑器拥有调试器.增量执行PHP脚本.查看每一行的所有变量值等功能. 1) Notepad ++ Notepad++是一款非常有特色的编辑器,是开源软件,可以免费使用.支持的语言: C, C++, Java , C#, XML, HTML, PHP, Javascript!  功能有: 1. Notepad内置支持多达 27 种语法高亮度显示(囊括各种常见的源代码.脚本,值得一提的是,完美支持.nfo 文件查看),也支持自定义语言: 2. N

  • php开发工具有哪五款

    由于最近小编要自学php,所以整理了一些常用的php开发工具,给大家分享一下: 1.EditPlus     EditPlus是一套功能强大,可取代记事本的文字编辑器,拥有无限制的Undo/Redo.英文拼字检查.自动换行.列数标记.搜寻取代.同时编辑多文件.全屏幕浏览功能.对于很多php程序来说,EditPlus 非常简单好用.同时EditPlus也是一款好用的HTML编辑器,除了可以颜色标记HTML Tag (同时支持C/C++.Perl.Java)外,还内建完整的HTML和CSS1指令功能

  • Python3 用什么IDE开发工具比较好

    这也许是学习一门语言时大家都会问的一个问题,其实我个人认为无所谓哪个最好,关键在于哪个用着顺手,方便.还有很多人乐于去做排名,去看排名,哪个最好什么的,我认为完全没有必要.下面简单给大家介绍2款IDE,一个是在线的,一个是本地的. 一.在线Python3开发工具 http://www.pythontutor.com 这款工具英文翻译过来叫Python家庭教师,很有趣的名字,别说也很贴切,一步一步的显示执行结果,显示内存中各个变量在执行过程中的具体变化,还真和家庭教室的模式类似,当然,还是需要学习

  • 2017年最好用的9个php开发工具推荐(超好用)

    对于PHP开发者,在互联网上有很多可用的开发工具,但对于初学者不知道哪个php开发工具比较好,找到一个合适的PHP开发工具是很难的,需要花费很多的时间精力.所以,今天我们小编就为初学者推荐几个2017年最好用的9个php开发工具. (php程序员工具箱 v0.1版本,点此下载:http://www.jb51.net/softs/554128.html) 一.PHP开发工具排行 1.SublimeText3 工具简介: Sublime Text是一款流行的代码编辑器.Sublime Text 具有

  • 人人都是开发者:7款傻瓜式APP开发工具

    谷歌推出的App Inventor Android App开发工具可以让你仅通过拖拉式的简单操作就可以创建自己的Android App.对于那些为了特定目的想要动手尝试开发一个简单应用的用户,除了App Inventor其实还有很多其他的选择,比如下面介绍的5款工具就可以让所有人都能轻松开发手机应用.不过如果你真想做个专业的开发者,还是像lion一样踏踏实实从基础学起比较好. 国外的营销工作者和技术开发者开发了许多能帮助企业创建简单APP应用的工具,通过这些工具,就算是一个对程序一窍不通的普通网

  • Visual Studio 2010 前端开发工具/扩展/插件推荐

    怎么样让Visual Studio更好地编写HTML5, CSS3, JavaScript, jQuery,换句话说就是如何更好地做前端开发.Visual Studio 2010不管是旗舰版还是免费版都没有对前端开发方面做充分的优化.不要希望VS默认安装这些东西,我们有很多VS的扩展可是使用. 这里列出的大多数扩展都可以使用Extension Manager (Tools > Extension Manager)来安装,你可以通过Visual Studio Gallery网站下载这些扩展. We

  • JavaScript 开发工具webstrom使用指南

    看到网上一篇介绍webstrom的文章,觉得功能确实强大,也知道为什么阿里巴巴的前端传到github上的文件为啥都有一个 .idea 文件,(传说淘宝内部推荐写js用webstrom) 我们可以理解 IDE 就是集成了很多你想要的功能,或者你不想要的功能.换句话说就是装了很多插件的 editor ,所以到目前为止,我还觉得没必要给它装什么插件. 那么接下来开始介绍webstrom的特色功能: WebStorm 是 JetBrains 推出的一款商业的 JavaScript 开发工具 任何一个编辑

随机推荐