wxvirus wxvirus
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

无解的lifecycle

let today = new Beginning()
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • C&C++

  • PHP

  • Python

  • Go

    • go基础

      • Mac搭建Go语言环境
      • Go基础语法学习
      • 包管理
      • 锁
      • 并发基础
      • 单元测试
      • 交叉编译
      • go基本数据类型
      • go语言的数据类型的转换
      • 指针和参数传递
      • go切片
      • go Map
      • go结构体
      • 扩展已有类型或系统类型
      • go接口
      • 函数式编程
      • error错误处理
      • goroutine
      • channel
      • 互斥量
      • go并发模式
      • go指针
      • go字符串
      • 类型别名和自定义类型
      • 好用的包和工具
        • 比较好的工具包
        • pkg/util/pagination.go
        • 错误码包
        • gorm回调方法
        • ini配置
      • go实现简单迭代器
      • go结构体内存对齐
      • 文件操作
      • time标准库
      • select多路复用
      • httpServer介绍
    • go核心

    • 网络编程

    • gowebsocket

    • gocasbin

    • K8S

    • rabbitmq

    • 框架相关

    • go-zero

    • kafka

    • rpc

    • 性能相关

  • microservice

  • rust

  • Java

  • 学习笔记

  • 后端
  • Go
  • go基础
wxvirus
2022-05-31

好用的包和工具

# 比较好的工具包

  • beego-validation (opens new window):本节采用的 beego的表单验证库,中文文档 (opens new window)。
  • com (opens new window),一个小而美的工具包。

# pkg/util/pagination.go

获取分页偏移量

package util

import (
  "github.com/gin-gonic/gin"
  "github.com/sword-demon/go-gin-example/pkg/setting"
  "github.com/unknwon/com"
)

func GetPage(c *gin.Context) int {
  result := 0
  // 将获取到的 get 请求的 page 参数转换为 int 类型
  page, _ := com.StrTo(c.Query("page")).Int()
  if page > 0 {
    result = (page - 1) * setting.PageSize
  }

  return result
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 错误码包

package e

const (
  SUCCESS        = 200
  ERROR          = 500
  INVALID_PARAMS = 400

  ERROR_EXIST_TAG         = 10001
  ERROR_NOT_EXIST_TAG     = 10002
  ERROR_NOT_EXIST_ARTICLE = 10003

  ERROR_AUTH_CHECK_TOKEN_FAIL    = 20001
  ERROR_AUTH_CHECK_TOKEN_TIMEOUT = 20002
  ERROR_AUTH_TOKEN               = 20003
  ERROR_AUTH                     = 20004
)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package e

// MsgFlags 错误码对应错误消息
var MsgFlags = map[int]string{
  SUCCESS:                        "ok",
  ERROR:                          "fail",
  INVALID_PARAMS:                 "请求参数错误",
  ERROR_EXIST_TAG:                "已存在该标签名称",
  ERROR_NOT_EXIST_TAG:            "该标签不存在",
  ERROR_NOT_EXIST_ARTICLE:        "该文章不存在",
  ERROR_AUTH_CHECK_TOKEN_FAIL:    "Token鉴权失败",
  ERROR_AUTH_CHECK_TOKEN_TIMEOUT: "Token已超时",
  ERROR_AUTH_TOKEN:               "Token生成失败",
  ERROR_AUTH:                     "Token错误",
}

// GetMsg 根据错误码获取错误消息,没有则返回fail
func GetMsg(code int) string {
  msg, ok := MsgFlags[code]
  if ok {
    return msg
  }

  return MsgFlags[ERROR]
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# gorm回调方法

func (tag *Tag) BeforeCreate(scope *gorm.Scope) error {
  err := scope.SetColumn("CreatedOn", time.Now().Unix())
  if err != nil {
    return err
  }

  return nil
}

func (tag *Tag) BeforeUpdate(scope *gorm.Scope) error {
  err := scope.SetColumn("ModifiedOn", time.Now().Unix())
  if err != nil {
    return err
  }

  return nil
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# ini配置

使用github.com/go-ini/ini包

下载

go get -u https://github.com/go-ini/ini
1
编辑 (opens new window)
上次更新: 2022/05/31, 23:54:39
类型别名和自定义类型
go实现简单迭代器

← 类型别名和自定义类型 go实现简单迭代器→

最近更新
01
vue3配合vite初始化项目的一些配置
07-26
02
网盘系统开发学习
07-24
03
linux多进程
06-19
更多文章>
Theme by Vdoing | Copyright © 2021-2024 wxvirus 苏ICP备2021007210号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式