-2

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

这张成绩单的一件事是它运行

 gofmt -s

在所有文件上。

我的仓库包含大约 25 个 Go 文件,唯一出现的标志是这个,共有六个文件:

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

我一直在谷歌上搜索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 行引发了一些错误,而另一个没有?

这个标志是什么意思?

4

1 回答 1

1

该命令gofmt -s myfile.go将格式化的文件打印到标准输出。该-s标志将简化应用于格式化文件。

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

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

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

gofmt 命令的文档在这里

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

于 2021-03-27T15:10:58.073 回答