go报告卡中的“文件未处理”

问题描述

我有一个围棋项目,我想在其中生成围棋成绩单 (https://goreportcard.com/)

这张成绩单的一个特点是它运行

 gofmt -s

在所有文件上。

我的 repo 包含大约 25 个 Go 文件,唯一提出的标志是这个,在六个文件上:

Line 1: warning: file is not gofmted with -s (gofmt)

我一直在 Google 上搜索 gofmt,但我真的找不到这实际上意味着什么。

以下是引发错误的文件示例:

package services

import (
    "github.com/heyjoakim/devops-21/models"
    log "github.com/sirupsen/logrus"
)

var d = GetDBInstance()

// GetUserID returns user ID for username
func GetUserID(username string) (uint,error) {
    var user models.User
    getUserIDErr := d.db.First(&user,"username = ?",username).Error
    if getUserIDErr != nil {
        log.WithFields(log.Fields{
            "err": getUserIDErr,"username": username,}).Error("Error in GetUserID")
    }
    return user.UserID,getUserIDErr
}

这是一个不会引发错误的文件:

package services

import (
    "strconv"

    "github.com/heyjoakim/devops-21/models"
    log "github.com/sirupsen/logrus"
)

    func UpdateLatest(latest int) {
        var c models.Config
    
        err := d.db.First(&c,"key = ?","latest").Error
        if err != nil {
            log.WithField("err",err).Error("Latest does not exist: DB err")
            c.ID = 0
            c.Key = "latest"
            c.Value = strconv.Itoa(latest)
            d.db.Create(&c)
        } else {
            err := d.db.Model(&models.Config{}).Where("key = ?","latest").Update("Value",latest).Error
            if err != nil {
                log.WithField("err",err).Error("UpdateLatest: DB err")
            }
        }
    }

我真的不明白为什么一个会在第 1 行引发一些错误,而另一个却没有?

这个标志是什么意思?

解决方法

命令 gofmt -s myfile.go 将格式化文件打印到标准输出。格式化文件的 -s 标志 applies simplifications

运行 gofmt -s -d myfile.go 查看原始文件和格式化文件之间的差异。

运行 gofmt -s -w myfile.go 将文件更新为所需的格式。

myfile.go 替换为 . 以对目录中的所有文件进行操作。

gofmt 命令的文档是 here

您的文件未格式化。在目录中运行 gofmt -s -w . 以修复文件。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...