美文网首页
工作中用Go: 工具篇

工作中用Go: 工具篇

作者: daydaygo | 来源:发表于2023-01-13 12:10 被阅读0次

工具篇 - goland

代码风格统一

action on save

action on save

Optimize import

一般会group成3-4类(上面配置了 goimports, 下面的配置可选)

  • go源码
  • 引入的pkg
  • 项目内pkg
  • _ 引入用来初始化的 pkg
import

before commit

before commit

码出高效: Ide feature trainer

goland 有非常多高效的操作, 强烈推荐

ide feature trainer

go struct <-> json

struct <-> json

快速查看go源码

在对应package上使用 cmd-b

Context action(option-enter): 当前上下文支持的快捷操作

非常智能, 生产力工具

context action

重构(ctrl-T): 代码修改推荐走重构, ide 帮助省一堆的修改

refactor

使用 test 快速验证go代码

test

使用 scratch 快速验证go代码

scratch

工具篇 - CI

golangci-lint

go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go run -v . # 文件/目录

一份统一的 golangci-lint 配置, 供参考

# 项目下的 .golangci.yaml 文件
# 省略其他配置, 只保留了线上开启的 lint
linters:
# Disable all linters.
  # Default: false
  disable-all: true
# Enable specific linter
  # https://golangci-lint.run/usage/linters/#enabled-by-default-linters
  enable:
    - errcheck # Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases
    - govet # Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string
    - ineffassign # Detects when assignments to existing variables are not used
    - staticcheck # Staticcheck is a go vet on steroids, applying a ton of static analysis checks
    - typecheck # Like the front-end of a Go compiler, parses and type-checks Go code
    - bodyclose # checks whether HTTP response body is closed successfully
    - sqlclosecheck # Checks that sql.Rows and sql.Stmt are closed.
    - makezero # Finds slice declarations with non-zero initial length
    - exportloopref # checks for pointers to enclosing loop variables
    #- exhaustive # check exhaustiveness of enum switch statements
    - errorlint # errorlint is a linter for that can be used to find code that will cause problems with the error wrapping scheme introduced in Go 1.13.
    - nilerr # Finds the code that returns nil even if it checks that the error is not nil.
    #- contextcheck # check the function whether use a non-inherited context
    - asciicheck # Simple linter to check that your code does not contain non-ASCII identifiers
    #- gosec # Inspects source code for security problems
    # - deadcode # Finds unused code #TODO
    # - structcheck # Finds unused struct fields
    # - unused # Checks Go code for unused constants, variables, functions and types
    # - varcheck # Finds unused global variables and constants
    # - gosimple # Linter for Go source code that specializes in simplifying a code
    # - gofmt # Linter for Go source code that specializes in simplifying a code
  # Run only fast linters from enabled linters set (first run won't be fast)
  # Default: false
  fast: false

静态检查修复建议

静态检查定义与修复建议: https://staticcheck.io/docs/checks

static check err static check doc

写在最后

得益于:

  • Go语言本身出色的工具链
  • IDE的强大支持
  • 研发效能平台助力

使用Go语言统一技术栈, 可以轻松减少大量重复性工作, 高效写出「值得信赖」的代码

相关文章

  • 工作中用Go: 工具篇

    工具篇 - goland 代码风格统一 action on save Optimize import 一般会gro...

  • 工作中用Go: Go基础

    背景介绍 工作中用Go: 工具篇 - 简书 (jianshu.com)[https://www.jianshu.c...

  • 文章目录

    Go 源码解读篇 《Go源码解读篇》之常见数据结构(list) 《Go源码解读篇》之 Error 工作中知识总结 ...

  • iOS装13-之bit

    工作当中用到Go语言,看了看开源的http/request.go 发现如下代码 这个32M真是有逼格的写法,首先简...

  • cordova 自定义(plugin)插件开发

    跟着白菜一起开发一个属于自己的Cordova插件吧!GO,GO,GO! 准备工作 工具原料Mac 电脑Cordov...

  • 工作区介绍

    升级go语言版本 建议去官网下载最新的工具包 工作区工作区就是程序工作的地方,里面包含go语言的编写源码文件,已经...

  • golang系列教程

    Go包管理 Go开发工具 Go Doc 文档 Go 数组 Go 切片 Go Map Go 类型 Go 函数方法 G...

  • HTML/CSS:规则、标签、快捷键、块和内联、属性、选择器

    规则: 标签不可嵌套 F12工具=检查 css中用/*注释*/ ; html中用