Как я могу отследить несоответствие возврата функции в Go? - PullRequest
0 голосов
/ 16 апреля 2020

Как я могу отследить несоответствие возврата функции в Golang? В двух разных средах сборки я вижу разницу. В обоих случаях Visual Studio Code должен быть удален в поле Linux, используя Go 1.12 в режиме модуля. В сломанном случае я веду сборку, используя изображение Golang: 1.12 Docker. Ниже упрощенно показано, где я вижу проблему.

Итак, для этого примера, полученного из https://github.com/satori/go.uuid:

package main

import (
    "fmt"

    uuid "github.com/satori/go.uuid"
)

func main() {
    // or error handling
    u2, err := uuid.NewV4()
    if err != nil {
        fmt.Printf("Something went wrong: %s", err)
        return
    }
    fmt.Printf("UUIDv4: %s\n", u2)
}

Неожиданная ошибка сборки:

./main.go:11:5 assignment mismatch: 2 variables but uuid.NewV4() returns 1 values

В среде, где я сталкиваюсь с этой проблемой, в коде Visual Studio при наведении указателя мыши на вызов uuid.NewV4 () я вижу:

func uuid.NewV4() (uuid.UUID, error)

uuid.NewV4 on pkg.go.dev

NewV4 returns random generated UUID.

и указатель мыши over uuid показывает:

package uuid ("github.com/satori/go.uuid")

uuid on pkg.go.dev

Я могу переключиться на другой пакет uuid, чтобы обойти это, но я хочу лучше понять, как это выяснить.

1 Ответ

2 голосов
/ 16 апреля 2020

Я думаю, проблема в разных github.com/satori/go.uuid версиях модуля. Вы можете видеть, что сигнатура функции NewV4 была обновлена ​​до NewV4() (uuid.UUID, error) в последней версии v1.2.0. До этого он был func NewV4() UUID

Затем разрешите конкретную c версию, как в этом вопросе:

Как указать Go зависимость модуля в go .mod для последнего коммита в репо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...