Maks
курсы учат писать телеграм бота но не учат программировать.
Anonymous
да уж, странные курсы
Укоротить строчку это лично моя прихоть была
Maks
там скорее цель мотивировать
Maks
сути не меняет)
Alexander
хз, мне сомнительным кажется добавлять методы к чужим типам. потом человек посмотрит в твой код, подумает, что этот метод в соотв пакете лежит. а он у тебя лежит
Maks
хз, мне сомнительным кажется добавлять методы к чужим типам. потом человек посмотрит в твой код, подумает, что этот метод в соотв пакете лежит. а он у тебя лежит
написано же что в данном случае))) Для данного случая это норм ситуаций. Для другого случая напишешь свою структуру в которую будешь передавать бота и у нее вызывать этот метод.
Alexander
тогда лучше: type MyBot tgapi.BotApi func (b *MyBot) sendSms(chatId int, message string) { b.Send(tgbotapi.NewMessage(chatId, message)) }
Freelance
Any Java full stack developer available. DM me. Can give you good business
Maks
А он будет внутри делать тоже самое
Maks
о, это же наследование?)
Alexander
о, это же наследование?)
ну такое, где все методы final)
Anonymous
https://pastebin.com/CRtB21bT с функцией (выдаёт ошибку о том, что bot и update не определены) https://pastebin.com/x8BWhLxv После определения запускаются два бота сразу и возникает конфликт
Я разобрался... Объявил переменную bot вне функции, написал функцию func send(ID int64, sms string) { bot.Send(tgbotapi.NewMessage(ID, sms)) } В функции где отправляются сообщения объявил что id := Update.Message.Chat.ID А саму отправку реализовал как send(id, "Bye")
Anonymous
В пизду курсы, куплю учебник
Alexander
а учебник да, будет получше с тем уровнем который есть.
Maks
Переменные могут быть только в структуре, как ее поля. При этом эти переменные задаются из точки входа путем последовательного вызова конструкторов всяких
Maks
и так далее
Maks
что бы зависимости все передавались явно, как уже сказали.
Maks
Это особенно важно когда ты тесты пишешь
Anonymous
ну это не очень хорошо. глобальные переменные зло. и даже в гошечке надо не пользоваться без необходимости. явная передача всегда лучше
Понимаю, что глобальные переменные это зло, но если это неизменяемая переменная? Например, токен бота
Anonymous
В пизду курсы, куплю учебник
И сменю ник, рано мне ещё так называться
Anonymous
https://pastebin.com/CPY2Hgkk
Нет, но возьму от туда кое что, спасибо)
Alexander
Понимаю, что глобальные переменные это зло, но если это неизменяемая переменная? Например, токен бота
по поводу бота смотри мой пример. токен можно как const объявить, тут глобально ок по моему мнению в реальных проектах такие данные как токен берут извне
Maks
Понимаю, что глобальные переменные это зло, но если это неизменяемая переменная? Например, токен бота
ну ты тогда его должен при запуске приложения передавать как параметр запуска
Maks
флаги так называемые
Anonymous
Спасибо что не послали и дали полезные советы) Но думаю пока что по книжке выучить основы, а уже потом лезть в ботов
Maks
type MyType struct { //поля } func (m *MyType) method() { //some code }
Maks
поля могут быть приватными а могут быть публичными. Приватные называются с маленькой буквы, публичные с большой. Методы так же)
Maks
ну и можно еще фабрикой сделать конструктор типо func NewMyType() *MyType { return &MyType { //default values } } c дефолтными значениями или передавать параметры в эту функцию и выставлять значения переданные сюда.
Maks
К сожалению вариантов много а не 1)
Anonymous
Прикол в том, что делал я всё это для самой простой программки, потому что показалось, что через чат в телеге будет удобнее, чем через консоль
Anonymous
Это всё, что я хотел сделать..
Maks
Нужно сухим кормом кормить)
Maks
А не паучами)
Maks
Нормальные паучи стоят 120+))))))))))
Maks
холистик покупаешь и всё) Стоит 1600+- за 1.5 кг. Хватает заглаза))) Я жидкий корм только по утрам даю))))
Alexander
нельзя, в стандартной библиотеке дофига проверок на nil и просто 0, а потом использование какого-нибудь default{field_name}
Alexander
соответственно либо метод new{my_type} и никакой защиты, что кто-то использует не до конца рабочую структуру, либо вот такие проверки и дефолты
Есть кто курс на степике по го проходил?)
Долго решаю задачи в силу тупости в плане математики. С пониманием синтаксиса Go проблем нет, думаю, что понимаю как работает все что прошел, и проблема только с решением задач, мат. подготовкой что-ли, в общем туплю оч сильно. Иногда дня по 3-4 на задачу уходит (на самом деле в целом выходит часа 3-4 времени если сложить, больше времени уходит на прокрастинацию и поиски ненужной инфы). Кажется что просто теряю время впустую... Язык нравится, хочется поскорее курс пройти, чтобы полностью синтаксис понимать, но внутренний голос говорит: "Как же так? Пропустить задачи на закрепление материала?" Какая-то биполярка...
Буду благодарен любым советам
Не ну это
Лучше поищи задачник, тут в чате кидали. 1001 задача что-то там
Alexander
покидай примеры задач
Не ну это
Да и решай их)
Не ну это
В любом случае придется много гуглить на начальных этапах
Alexander
Не, ну задачи могут быть бестолковые реально. как пример, в одном учебнике по сям полгода тратится на изучение printf, scanf с разными аргументами. Чисто справочный материал огромной главой запихали
У меня больше времени уходит на споры с самим собой на тему нужности умения решать подобные задачи :D Вроде как половина ютуберов программистов говорит что не нужно тратить время на то чтобы научиться решать задачи не имеющие ничего общего с реальностью. НО как понять человеку который толком ничего не программировал, а только немного ковырял верстку, какие задачи имеет смысл уметь решать, а какие нет, чтобы эффективнее расходовать время.
покидай примеры задач
Типо такой. Вроде кажется легкая, но если разу решить не получается, дизмораль ловлю почему-то. https://stepik.org/lesson/229320/step/16?unit=201906
В итоге чем больше времени трачу на решение, тем больше ощущаю себя пнем и тем больше дизмораль, а когда решаю, кажется что должно быть не так, что должен был решить быстрее 🤯
Alexander
ну ты можешь в двух словах описать как ее сделать? я могу
Шиза какая-то
Alexander
конечно можно задаться целью сделать код максимально быстрым и забенчмаркать все варианты =)
Alexander
ну ты можешь в двух словах описать как ее сделать? я могу
суть в том, что если не можешь, то надо делать, имхо
Я понимаю как сравнить цифры циклом, но не понимаю как представить итоговое число. Думал можно после сравнения запихивать отличающиеся числа в срез или переменную. Потом цикл написать какой-нибудь чтоб переворачивал число.
Надо пробовать. Но я понимаю что это займет добрую пару часов. Просто хотелось узнать, мой подход адекватен вообще ?
В плане траты часов на то чтобы решать задачки с курса. Или лучше идти повторять код за ютуберами и пытаться создать что-нибудь свое подобное?
Alexander
Ну по вопросам я вижу, что задачу тебе нужно решать
Денис
В плане траты часов на то чтобы решать задачки с курса. Или лучше идти повторять код за ютуберами и пытаться создать что-нибудь свое подобное?
Лучше делать и то и то)) А вообще по началу будет трудно, особенно если с нуля, могу только посоветовать не разочаровываться и верить в себя
Alexander
я 2 варинта вижу: 1. Без запар: strconv.Itoa, strings.Replace, strconv.Atoi 2. С запарами: получать разряды деля на степени десятки, дальше результат += разряд*10^n
Alexander
второе может быть быстрее, но если это не критический кусок, то первое актуальнее, так как проще
Вроде как нужно использовать только пройденный материал, а это циклы, условия, массивы и срезы, значит 2 вариант.
Лучше делать и то и то)) А вообще по началу будет трудно, особенно если с нуля, могу только посоветовать не разочаровываться и верить в себя
Вот если б человек @edwvee не подсказал мне формулу, я бы сам до нее не допер. С верой в себя вроде проблем нет, но она быстро подрывается когда начинаю тратить много времени на задачки.
Μαριούπολη
Самое сложное - не перегореть и не слушать что «это не твоё»)
Спасибо за ответы / советы @edwvee @Nenuetoflex12 @herafribus @tervizator
Μαριούπολη
А что там за задача ?
Μαριούπολη
Ток в приложении открывается у меня
Самое сложное - не перегореть и не слушать что «это не твоё»)
Как ни странно, пока ни одного «это не твоё» не услышал за 2 месяца :D
Μαριούπολη
А все
Μαριούπολη
Ты главное в чат по пхп не заходи
Μαριούπολη
Там услышишь 😂
Μαριούπολη
С 1го вопроса
Alexander
Вроде как нужно использовать только пройденный материал, а это циклы, условия, массивы и срезы, значит 2 вариант.
у меня типа получается второй вариант: func removeDigit(num, digit uint) uint{ res := uint(0) numTenPow := uint(1) innerTenPow := uint(1) for num >= numTenPow{ digitFromNum := (num / numTenPow) % 10 if digitFromNum != digit{ res += digitFromNum*uint(innerTenPow) innerTenPow *= 10 } numTenPow *= 10 } return res }
Может, есть у кого-нибудь на примете что-то типа краткого вводного курса / книги / видео аля "решение задач для начинающих программистов"? Есть такое вообще? :D
Alexander
ну запихни в мейн)
Μαριούπολη
Полно
ну запихни в мейн)
Благодарю 🤝