🐁 Arutrancetro
вот я тут также пытаюсь
Anonymous
тут тоже можно, при желании ...
Васильев Виктор
Ну просто как бы тут каст и не нужен
Васильев Виктор
так как если у тебя есть нужные методы
🐁 Arutrancetro
)))
Васильев Виктор
то ты как бы уже попал туда куда надо
🐁 Arutrancetro
просто откуда я знаю какой тип ошибки возвращает функция
🐁 Arutrancetro
она показывает error
🐁 Arutrancetro
а мне надо получить другой
🐁 Arutrancetro
в документации смотреть?
Aleksandr
просто откуда я знаю какой тип ошибки возвращает функция
у тебя в сигнатуре метода прописан тип ошибки
🐁 Arutrancetro
ну так он error
🐁 Arutrancetro
а у меня ошибка MyError
Aleksandr
нет
Aleksandr
func Sqrt(x float64) (float64, MyError)
Aleksandr
у тебя прописано MyError
🐁 Arutrancetro
как я узнаю что можно закастить к моей ошибке
Aleksandr
MyError и есть
🐁 Arutrancetro
а если у меня error будет возвращаться?
🐁 Arutrancetro
если у меня там много ошибок разных
🐁 Arutrancetro
то только доки
Aleksandr
Aleksandr
да
Васильев Виктор
крайне часто типа ошибки знать не нужно.
Васильев Виктор
Ты или прверяешь на константу
Васильев Виктор
в которой уже есть вся инфа
Васильев Виктор
ИЛИ ты знаешь пару типов ошибки котоые могут быть чтобы взять из их доп инфу
Васильев Виктор
Я же говорил нужно будет немного голову перестроить чтобы привыкнуть :)
🐁 Arutrancetro
понятно
Васильев Виктор
Тут немного по другому
Васильев Виктор
почитай какие-нибудь легкие проекты на го и поймешь :)
🐁 Arutrancetro
if _, ok := err.(MyError) { fmt.Println(ok.Error()); } но дело в том что и так не работает
🐁 Arutrancetro
угу, тут еще сначала идет переменная, потом тип)
🐁 Arutrancetro
тоже надо привыкать
🐁 Arutrancetro
и массивы по японски определяются)
Васильев Виктор
так ты опять ;ok
Васильев Виктор
не поставил
Васильев Виктор
массивы определяются вполне стандартно О_о
Васильев Виктор
if _, ok := err.(MyError);ok { fmt.Println(ok.Error()); }
Васильев Виктор
и ты приводишь не от интерфейса
Васильев Виктор
так что тип должен быть сзади
🐁 Arutrancetro
сейчас поставил =)
Васильев Виктор
А когда не от интерфейса то собственно проверка и не нужна
Васильев Виктор
fmt.Println(MyError(err).Error())
🐁 Arutrancetro
но ok теперь ничего не подсвечивает
Васильев Виктор
ой
Васильев Виктор
стоп
🐁 Arutrancetro
а понял
Васильев Виктор
я уже сонный
Васильев Виктор
ща
Aleksandr
Васильев Виктор
да да
Васильев Виктор
я туплю уже
Васильев Виктор
извините
Васильев Виктор
пора спать
Васильев Виктор
только говорили о интерфейсе и я мелю о НЕ интерфейсе
🐁 Arutrancetro
все
🐁 Arutrancetro
допер)))
🐁 Arutrancetro
спс =))
🐁 Arutrancetro
if myErr, ok := err.(MyError); ok { fmt.Println(myErr.Error()); }
🐁 Arutrancetro
вот оно =)
Васильев Виктор
https://play.golang.org/p/shdUCCEPb6m
Васильев Виктор
Вот лови полное решение
Васильев Виктор
ЗАметь что метод Error не с указателем работает а с копией
Васильев Виктор
ну. Значением
Васильев Виктор
Это важно
🐁 Arutrancetro
да, гоу за один день не выучишь, привыкать надо
🐁 Arutrancetro
после ООП)
Васильев Виктор
НУ как. Его примерно за неделю не торопясь и расслабленно можно освоить. НУ естественно не глубоко. Как и любой язык он со своими камнями. НО чтобы напимсать первые проекты нормальные у него порог вхождения крайне низкий :)
Васильев Виктор
Я начал с ним работать над первым проектом комерческим через дней 5
Васильев Виктор
Ты го тур весь прошел ? :)
🐁 Arutrancetro
проходу, до горутин дошел
Васильев Виктор
ага оке) Если будет интерес на досуге почитай блог на официальном сайте. Они многое там разжевывают :)
🐁 Arutrancetro
оке =))
Васильев Виктор
И про ошибки и интерфейсы и слайсы и паники и так далее
🐁 Arutrancetro
а почему нельзя так? go func() {}
Cat
можно
🐁 Arutrancetro
только именованную функцию можно передавать?
🐁 Arutrancetro
а что-то не работает
🐁 Arutrancetro
а понял, надо тут же вызывать функцию