
Maxim
20.12.2017
07:08:47

hamper ?
20.12.2017
07:09:21
Там коммит вчера последний, на счет актуальности не знаю.

Maxim
20.12.2017
07:10:05
Я всё равно психанул и пишу своё. Уже пару ботов перенёс, вроде без боли

hamper ?
20.12.2017
07:13:07
Не проще было запуллреквестить нужную логику в готовые?

Google

Maxim
20.12.2017
07:13:57
go-telegram-bot-api, например, уже сложно фиксить из-за странных решений заложенных изначально

Demuz
20.12.2017
07:21:58
Через месяц повторим.

Daniel
20.12.2017
07:30:40
а на картинке что?

Demuz
20.12.2017
07:31:04
Код и ошибка.

Daniel
20.12.2017
07:31:04
и, главное, зачем мог понадобиться разборщик из структуры в карту?

Demuz
20.12.2017
07:31:27
type Server struct {
ID uint
Title string
NodeID uint
}

Daniel
20.12.2017
07:31:52

Demuz
20.12.2017
07:31:53
func main() {
srv := Server{3, "ProxmoxVE", 1}
fmt.Println(srv.StructDisassemble())
}
func (S *Server) StructDisassemble() map[string]interface{} {
disMap := map[string]interface{}{}
instance := S
elements := reflect.ValueOf(&instance).Elem()
typeOfStruct := elements.Type()
for i := 0; i < elements.NumField(); i++ {
f := elements.Field(i)
disMap[typeOfStruct.Field(i).Name] = f.Interface()
}
return disMap
}

Google

Daniel
20.12.2017
07:32:50
для такого простого кода (без нестандартных модулей) есть https://play.golang.org/

Demuz
20.12.2017
07:33:06

John
20.12.2017
07:33:39

Demuz
20.12.2017
07:38:17
Поможете?

John
20.12.2017
07:38:58
Поможете?
Оставь просто srv - https://play.golang.org/p/T1zox99TLf
Если Я правильно понял суть вопроса :)

Demuz
20.12.2017
07:39:35
Здорово.! Спасибо!
А что их тип еще видешь, тогда еще рефлект туда добавить, да?

John
20.12.2017
07:42:26

Kirill
20.12.2017
07:42:51
Утра доброго!
Господа, а есть ли способ быстро получить множество ошибок которые может вернуть какая-либо функция?
Например есть api к телеграмму , есть функция которая ининциализирует бота
package main
import "gopkg.in/telegram-bot-api.v4"
func main() {
bot, err := tgbotapi.NewBotAPI("some very secret token")
if err != nil {
panic("Oh no!")
}
}
В err может упасть дюжина разных ошибок (плохой токен, проблемы с сетью и т.д.). Можно ли как-то получить их список (имеется ввиду разные type NetError struct удолетворящие интерфейсу error) чтобы каждую по-своему обрабатывать, не излазив все исходники? Или даже примерного вспомогательного инструмента нет?

John
20.12.2017
07:44:46

Demuz
20.12.2017
07:45:07

Daniel
20.12.2017
07:48:02

John
20.12.2017
07:48:43

Александр
20.12.2017
07:49:47
можно свитч по типу ?

Daniel
20.12.2017
07:50:34
можно, но стандарта на типизацию ошибок (как, например, в яве) в go нет
поэтому в общем случае ты имеешь уникальное значение некоего типа, удовлетворяющего интерфейсу error. и все

John
20.12.2017
07:52:20

Google

Александр
20.12.2017
07:52:26
я думаю можно что-то подумать конечно с этим
кастомную либу сделать ?

Daniel
20.12.2017
07:52:37
можно
будет 15-ый стандарт
такие вещи должны в языке быть

Kirill
20.12.2017
07:53:04
Неужели автоматически собрать все типы которые могут вернуться в error так сложно? Чисто чтобы знать к чему нужно кастить ошибку?

Daniel
20.12.2017
07:53:05
впрочем - их нигде, кроме явы, и нет

Александр
20.12.2017
07:53:17
в пыхе щаз мода на эксепшены ?

Daniel
20.12.2017
07:53:54

Savely
20.12.2017
07:54:13
os.Exit(1) вроде или типа того
Хотя может путаю с Fatal

Александр
20.12.2017
07:54:39
Error!

Daniel
20.12.2017
07:54:40
садитесь, 2

Александр
20.12.2017
07:54:49
она возращает error

Daniel
20.12.2017
07:54:49
errors.New он возвращает

Savely
20.12.2017
07:55:17
Окей, спутал)

Александр
20.12.2017
07:55:25

John
20.12.2017
07:55:35

Google

Kirill
20.12.2017
07:56:17
errors.New он возвращает
Ну да, когда все ошибки задаются через errors.New разобрать - черт ногу сломит. Но ведь часть разрабов пишут под каждую ошибку свою переменную или тип. Их-то собрать можно?

Александр
20.12.2017
07:56:20
ну как нед?

Daniel
20.12.2017
07:56:25
а errors.New(), в свою очередь, возвращает указатель на неэкспортируемый errorString. Вокзал. В смысле - приехали...

John
20.12.2017
07:57:27
ну как нед?
Он тебе возвращает указатель на объект error, у которого есть метод Error(), который и вернет тебе строку ;)

Admin
ERROR: S client not available

Daniel
20.12.2017
07:57:47
не бывает объекта error. error - это интерфейс, а не тип

Александр
20.12.2017
07:57:52
указатель на errorString, который реализует интерфейс error

John
20.12.2017
07:58:18
ладно, errors ))

Maxim
20.12.2017
07:58:35
Будет. Она догоняет сам код

Александр
20.12.2017
07:58:46
return &errorString{text}
внезапно да

John
20.12.2017
07:59:25

Александр
20.12.2017
07:59:48
ты говоришь что вернется объект типа error
хотя это не так

John
20.12.2017
08:00:04

Александр
20.12.2017
08:00:19
ты и сейчас не прав, тип то errorString называется ?
он просто реализует интерфейс error

Google

John
20.12.2017
08:00:35
ды :)
Но не строку ж в чистом виде

Александр
20.12.2017
08:01:09
errorString это структура
если уже пошла такая пьянка

John
20.12.2017
08:01:27

Александр
20.12.2017
08:01:47
дайте стикер - "рукалицо", под рукой нет

John
20.12.2017
08:01:59
?

Daniel
20.12.2017
08:02:10
коллеги
сворачивайтесь
тут не о чем так долго говорить

Александр
20.12.2017
08:02:36
O_o ну мы же про гоу говорим

Kirill
20.12.2017
08:02:42
Ммм... Время слоупочных вопросов. А разве интерфейс сам по себе не тип?
type I interface {}
Все-таки type и все дела

John
20.12.2017
08:02:46
сворачивайтесь
Рабочий день только начался, а переливание из пустого в порожнее любимое дело ))

Александр
20.12.2017
08:03:31

Kirill
20.12.2017
08:05:06