@proGO

Страница 1345 из 1674
Александр
04.04.2018
08:52:47
func (c *Config) Validation() error { if c.Var == nil { return errors.New("required Var field") } if c.Var2 == nil { return errors.New("required Var2 field") } }

фактически он возращается, и потом сразу в log.Fatal

Daniel
04.04.2018
08:53:34
тут сингл еррор нарисован

Александр
04.04.2018
08:53:44
(да надо было кастом сделать error, лень :))

Google
Daniel
04.04.2018
08:53:58
я пока не понял задачу

Александр
04.04.2018
08:54:12
тут сингл еррор нарисован
спасибо капитан, я и думаю как мульти возвратить ?

что бы в гоувей

ибо мне в консоль надо все ошибки получить валидации

а не первую

вариант конечно с func (c *Config) Validation() (err []error) { if c.Var == nil { err = append(err, errors.New("required Var field") } if c.Var2 == nil { err = append(err, errors.New("required Var2 field") } }

но мне кажется это немного странным

Daniel
04.04.2018
08:56:53
я же спросил - что дальше с этим мультиеррором произойдет?

Александр
04.04.2018
08:58:05
можно конечно map вернуть

дабы можно проверить было "попало ли поле в ошибку"

Daniel
04.04.2018
09:01:50
в вывод log.Fatal попадет все равно только первая. нахрена возвращать остальные?

Zver
04.04.2018
09:02:36
Возвращать одну ошибку, а в нее впихнуть информацию по всем выявленным ошибкам валидации.

Google
Александр
04.04.2018
09:03:45
в вывод log.Fatal попадет все равно только первая. нахрена возвращать остальные?
ну это понятно ? Конечно придется какую то обертку лепить

но все это не очень красиво

Daniel
04.04.2018
09:03:56
еще раз

ключевой вопрос (как и во всех остальных случаях) - зачем?

Александр
04.04.2018
09:04:46
в итоге в консоль должно быть распечатано: required Var field required Var2 field

Daniel
04.04.2018
09:04:48
если потом по этой multierror надо итерироваться - так возвращай []error

Daniel
04.04.2018
09:04:59
если нет - что ты еще собираешься с ней делать

Александр
04.04.2018
09:05:43
да блин понятно

я просто думал есть какой то уже регламентированный формат

написать то я могу все что угодно

и даже работать будет

вопрос насколько это будет соотносится с концепцией языка и общепринятыми нормами ?

Zver
04.04.2018
09:07:03
в итоге в консоль должно быть распечатано: required Var field required Var2 field
Ну так вместо отправки ошибки, просто добавлять к строке эту информацию, а потом если строка не пустая, вернуть одну ошибку с этой информацией об ошибках.

Александр
04.04.2018
09:07:22
вопрос то был "как принято возвращать multierror из функции"

Daniel
04.04.2018
09:07:33
не принято

Александр
04.04.2018
09:07:33
а не "КАК вернуть multierror из функции"

не принято
ну неужели ни у кого не возникло потребности?

я склоняюсь к возразу кастомного error, может быть как @mykytanikitenko описал

Google
Александр
04.04.2018
09:08:57
это же классика, всякие валидаторы и прочее

Alexander
04.04.2018
09:09:14
ой да все делают по-своему исходя из того, что нужно конкретно тебе, го же)

в gin например type ValidationErrors map[string]*FieldError

Александр
04.04.2018
09:10:58
это конечно хорошо...

но я бы предпочел вернуть все такие на базе error интерфейса

Daniel
04.04.2018
09:11:39
коллега, да делайте вы что хотите :)

Zver
04.04.2018
09:11:42
это же классика, всякие валидаторы и прочее
Ну если хочется обрабатывать каждую ошибку, то как писали выше, кастомную ошибку. И в нее впихивать ошибки.

Александр
04.04.2018
09:12:12
коллега, да делайте вы что хотите :)
а потом нас расстреляют (c) ?

Daniel
04.04.2018
09:12:14
общепринятого способа нет, потому, что это UI, все же. роботам список ошибок не интересен, они фиксов не пишут.

Vladislav
04.04.2018
09:24:35
Пытаюсь запустить Go скрипт, выдает ошибки

Daniel
04.04.2018
09:25:27
скрипт?!

Vladislav
04.04.2018
09:25:53
ну окей, программу... да, Go - компилируемый язык

Daniel
04.04.2018
09:26:23
так на этапе запуска или компиляции ошибки?

Vladislav
04.04.2018
09:26:50
хм

Olzhas
04.04.2018
09:27:54
John
04.04.2018
09:28:03
Пытаюсь запустить Go скрипт, выдает ошибки
Телепаты в отпуске. Покажи код. Покажи ошибки

Vladislav
04.04.2018
09:28:09
:go go run -v bot.go command-line-arguments # command-line-arguments ./bot.go:17:16: undefined: Config ./bot.go:56:5: undefined: start ./bot.go:58:5: undefined: refs ./bot.go:134:18: undefined: User

package main var ( bot *tgbotapi.BotAPI configuration Config phrases map[int]string db *gorm.DB ) func main() { initLog() log.Print("Log successful...") initConfig() log.Print("Config loaded...") initStrings() log.Print("Init strings successful...") initDB() log.Print("Init DV successfull...") } func initConfig() { file, err := os.Open("config.json") if err != nil { log.Print("ERROR: ") log.Panic(err) } defer file.Close() body, err := ioutil.ReadAll(file) log.Print("First 10 bytes from config.json") log.Print(body[:10]) body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) log.Print("First 10 bytes after trim") reader := bytes.NewReader(body) log.Print(body[:10]) decoder := json.NewDecoder(reader) err = decoder.Decode(&configuration) if err != nil { log.Print("ERROR: ") log.Panic(err) } }

я думаю на Этапе компиляция ошибка

John
04.04.2018
09:29:09
Кто-то забыл добавить импорты :))

Google
Vladislav
04.04.2018
09:30:13
хм

$ go get -v go get: no install location for directory /Users/vlad/code/tgbots/bot outside GOPATH For more details see: 'go help gopath'

может в этом проблема

в GOPATH

Александр
04.04.2018
09:31:17
Можете утаскивать - https://play.golang.org/p/6Xggpg6MV8G ?

Daniel
04.04.2018
09:32:20
и вывод ошибок в случайном порядке всегда. отлично...

Admin
ERROR: S client not available

Александр
04.04.2018
09:33:45
пошло поехало... ?

Vladislav
04.04.2018
09:34:34
я не пойму, что за тип Config, такого объявления не вижу в коде

это встроенный в Go тип ?

import ( "github.com/go-telegram-bot-api/telegram-bot-api" "log" "io/ioutil" "bytes" "encoding/json" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" "os" "io" )

все Импорты

https://golang.org/pkg/go/types/#Config

вот нашел такое

$ go run bot.go # command-line-arguments ./bot.go:3:8: imported and not used: "go/types"

я правильно понял, что мне надо пакет такой поставить?

Daniel
04.04.2018
09:38:20
надо убрать из импортов лишний пакет

Vladislav
04.04.2018
09:39:33
echo $GOPATH /Users/username/go это норм?

настроено

Daniel
04.04.2018
09:41:28
да

Google
Vladislav
04.04.2018
09:41:32
$ go env GOARCH="amd64" GOBIN="" GOCACHE="/Users/username/Library/Caches/go-build" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/username/go" GORACE="" GOROOT="/usr/local/Cellar/go/1.10.1/libexec" GOTMPDIR="" GOTOOLDIR="/usr/local/Cellar/go/1.10.1/libexec/pkg/tool/darwin_amd64"

вот я такое вижу, мне кажется что тут что-то не так

в общем проблема такая, есть тип Config, а Go его не видит

Александр
04.04.2018
09:45:06
?

версия для зануд

Макс
04.04.2018
09:50:16
Народ, кто нибудь писал прогу на Qt Go? Получилось ли?

Daniel
04.04.2018
09:51:36
тут проскакивали даже скриншоты

Макс
04.04.2018
09:52:19
Здесь слишком много сообщений, чтобы найти искомое

Александр
04.04.2018
09:52:28
мне вот интересно

type Errors []*OneError func (e Errors) Add(err *OneError) { e = append(e, err) }

это допустимо вообще O_o

хотел красиво сэкономить на append

Arch
04.04.2018
09:53:44
хотел красиво сэкономить на append
допустимо, но у тебя е передается как аргумент, а не как указатьль, по этому после выхода из функции значение е потеряется

Александр
04.04.2018
09:54:25
с указателем не тянет

first argument to append must be slice; have *Errors

Arch
04.04.2018
09:54:54
надо писать (*e)

Vladislav
04.04.2018
10:00:33
с переменной configuration Config выполняется следующее действие в программе err = decoder.Decode(&configuration)

Страница 1345 из 1674