zoukankan      html  css  js  c++  java
  • clipperhouse/gen 很不错的golang 代码生成包

    使用clipperhouse/gen 可以帮助我们生成好多帮助代码,简化开发,以下是一个简单的学习使用

    环境准备

    • 安装gen
    go get -u github.com/clipperhouse/gen
    • 添加struct
      platform.go
     
    package main
    import "fmt"
    // +gen  slice:"Where,Count,GroupBy[string],Aggregate[string]"
    type Platform struct {
        Name    string                 `json:"name"`
        Version string                 `json:"version"`
        Config  map[string]interface{} `json:"config"`
    }
    func (p Platform) String() string {
        return fmt.Sprintf("this is my platform print: %s , %s", p.Name, p.Version)
    }

    生成代码

    gen

    效果

    • 代码引用
      main.go
     
    package main
    import (
        "log"
        "strings"
    )
    func main() {
        platforms := []Platform{
            {
                Name:    "first",
                Version: "v1",
                Config: map[string]interface{}{
                    "name":     "v1",
                    "register": true,
                },
            }, {
                Name:    "demosecond",
                Version: "v2",
                Config: map[string]interface{}{
                    "name":     "v2",
                    "register": false,
                },
            },
        }
        mPlatformSlice := PlatformSlice(platforms)
        newItems := mPlatformSlice.Where(func(p Platform) bool {
            if strings.HasPrefix(p.Name, "demo") {
                return true
            }
            return false
        })
        for _, item := range newItems {
            log.Printf("%s", item)
        }
    }
    • Makefile
    update:
        go get -u github.com/clipperhouse/gen
    gen:
        gen 

    说明

    clipperhouse/gen 是一个很方便的工具,同时支持扩展,我们可以自己创建新的typewriter,同时也提供了
    watch 模式,方便自动代码生成
    引用其他typewriter 的方法

     
    gen add gen add github.com/clipperhouse/stringer

    会生成一个_gen.go 的文件,通过gen list 可以查看安装的typewriter,同时目前在使用其他模块的时候发现了一些
    bug,但是这种模式还是很不错的,golang 基于generate 模式进行代码生成使用的方法,在好多框架都包含,属于
    一个特色

    参考资料

    https://github.com/clipperhouse/gen
    https://github.com/clipperhouse/typewriter
    https://github.com/clipperhouse/setwriter
    https://github.com/clipperhouse/slice
    https://github.com/clipperhouse/stringer
    https://clipperhouse.com/gen/slice/
    https://github.com/rongfengliang/golang-gen-learning

  • 相关阅读:
    12.1
    11.26
    12.5Java日报
    11.25
    11.27
    12.03
    11.28
    12.04
    如何在TortoiseGit中使用sshkeygen生成的key
    leetcode 39 组合总和
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/14107710.html
Copyright © 2011-2022 走看看