Игроман
Вместо книжек по 500 страниц нужна просто одна синтаксическая диаграмма. Уже устал по крупицам из разных источников собирать полную картину.
George
Какая задача решается?
Игроман
Задача -- найти ЕДИНОЕ и ПОЛНОЕ описание языка, не рассыпанные по разным книжкам и сайтам
xasai.denet
https://golang.org/doc/
George
https://golang.org/ref/spec
На здоровье
xasai.denet
А если прям кратенько, то первая глава книги "Black Hat Go" закроет ваши вопросы по синтаксису
Игроман
xasai.denet
А по-моему, человек просто запутался в различиях методов от функций
Игроман
Я запутался во всяких книжках, похожих на Детгиз.
Игроман
Каждая книжка рассчитана на детскую аудиторию.
Maks
Так ты просто начни что то делать а потом разбирайся
Maks
Го довольно простой для этого
xasai.denet
Прочитайте effective go, по ссылке выше
Maks
Там из сложного это наверное каналы
George
Maks
И то что есть несколько способов создать объект или просто выделить под объект память обнуленную
Maks
И есть мэйк
George
Лично мне отличным стартом показался интерактивный туториал A tour of go. Там и про функции, и про методы, и про всё.
Читать "детские" книжки и туториалы - это нормально, если не знаешь "детских" основ языка. Все там были.
https://tour.golang.org/welcome/1
George
Если детскость - это объяснение что такое переменная, а что такое цикл - то там такого нет, всё лишь про синтаксис и особенности
Игроман
Maks
какой сейчас промышленный стандарт в го конфигурирования?
Maks
типо у меня есть класс отвечающий за коннект к дб
Maks
и есть конфиг для него
Maks
вариантов тьма
Maks
биндиться на томл, енв, ямл прям в описании полей
Maks
или заполнять при создани экземпляра через конструктор условно и передавать параметры
Maks
или еще что то
Maks
viper?
Vitaliy
viper?
Ща все стремится перейти на env var.
Vitaliy
Контейненизация приложений к тому подталкивает
Vitaliy
И кубер
Maks
А там есть биндинг из енва как в томл?)
Vitaliy
Maks
https://github.com/caarlos0/env
Maks
Типа такой
Maks
ок. Вообще мне кажется ямл удобнее
Maks
со своими вложенностями
Maks
уровнями
Maks
Но да ладно
George
У всего своё применение, одно другому не мешает. У нас, к примеру, конфиг в ямле, но всё то же с более высоким приоритетом можно задать через переменные окружения.
Нам в пайплайнах для тестов удобнее через окружение, в реальном бою через файл.
Maks
Я просто на пыхе прывык локально енв конфижить который при сборке докера юзается, а в проде у меня были енвы через сиайку. Но как в го делают не знал
Maks
видел что в го есть биндинг удобный вот щас с ним разбираюсь
Maks
похоже что везде одно и то же)
Maks
Я тут подумал что бы не костылить дев и прод/стейдж/тест сборки - лучше локально доже в докер запихать и пересобирать контейнер когда енвы меняешь и запускать приложение го в докер контейнере.
Maks
Что бы енвы брать из переменной окружения
Maks
и не делать godotenv.Load()
Maks
Вообще
Vitaliy
В докере можно при запуске контейнера указать, из какого dotenv файла обогатить окружение приложухи.
Maks
дак я потому и говорю, я с докером работаю
Maks
мне правда пока не до конца понятна работа с сетью между разными контейнерами. У меня есть 3 сервиса и они между друг другом общаются, находясь внутри одной докер сети (одна создает другие екстернал). И там приходится указывать для обращения имя контейнера и внутренний порт. Это немного сегодня меня запутало.
Maks
а как у вас деплоятся го приложения? просто берется голанг образ, вызывается гобилд и потом cmd app
Maks
или в одном контейнере билдится приложение а потом скретчится в другой контейнер с минимальным весом?
Inellok
Как в gomobile экспортнуть в .aab?
Таршиш
Мне непонятен смысл идеи связки с докером. Это такой режим тестирования? Или Вы сразу клиенту образ докера поставляете? А клиент типа должен быть спецом и уметь работать с докером.
Кто-нибудь слышал что-нибудь про "Коридорное тестирование" или все ломанулись в докер, забыв про классику?
🔥
🔥
Контейнеризация штука классная
Vitaliy
Где-то так
Игроман
Компилятор gccgo не понимает os.ReadFile
А если компилить с помощью
go build ...
то проект прекрасно компилится
В чем фишка?
🔥
Maks
Null
Golang Online Meetup в Mail․ru Group!
5 августа в 19:00 Mail․ru Group проводит онлайн-встречу по GO.
В программе — три технических доклада от коллег из inDriver, Delivery Club, ВКонтакте. Расскажут про перенос сервиса из монолита, опыт разработки микросервисов и разные пути написания парсеров.
Участие бесплатное, зарегистрироваться и просмотреть программу можно по ссылке.
➖➖➖
5 августа, 19:00 по мск
Регистрация на мероприятие
Vitaliy
Мне непонятен смысл идеи связки с докером. Это такой режим тестирования? Или Вы сразу клиенту образ докера поставляете? А клиент типа должен быть спецом и уметь работать с докером.
Кто-нибудь слышал что-нибудь про "Коридорное тестирование" или все ломанулись в докер, забыв про классику?
С одной стороны, прямо клиенту поставляется услуга, а во что её заворачивают, то это проблема провайдера услуг.
Или “клиент” — это что-то другое? Кто такой “клиент” в процитированном сообщении?
А вот заказчик. Заказчик сам устанавливает, как ему предоставлять сорцы.
Но у нас обсуждение про то, что делать с сорцами дальше. Деплоить вручную через ssh + vim, ансайбл, папет, женкинс, или завернуть в контейнер, хэльмы написать — и в кубер… Вот про это говорим
Slav
DI
Добрый день.
buf := make([]byte, 7, 7)
r := bufio.NewReader(connector.udpConn)
_, err := io.ReadFull(r, buf)
fmt.Println("Error: ", err)
При вызове ReadFull, поток падает, если отсутствуют данные в r(по UDP всегда приходят данные, если устройство в сети. в доках не нашел ничего, как проверить это)
В документации не нашел ничего, что связано с этим. Подскажите, если кто знает как лучше читать данные в таком случае
Dmitry
Emil
Хочу бота написать для телеги, но библиотеки что-то доверия не вызывают те, что я нашел. Лучшее без библиотек или может кто знает хорошую?
Maks
К тому же сырцы не обязывают использовать докер
Maks
точнее код. Код завязан на переменных окружения. А это уже задача заказчика указать их такими, какие ему нужны
Игроман
Что не так с этим кодом:
package main
import (
"encoding/json"
"fmt"
)
func main() {
type MyId struct {
id int json:"id"
}
var id MyId
fileText := {"id":1357}
jsonParsingError := json.Unmarshal([]byte(fileText), &id)
if jsonParsingError != nil {
panic(jsonParsingError)
return
} else {
fmt.Printf("ID: %d", id.id)
}
}
Emil
Игроман
Дык у меня есть готовый json-формат и в нем поле "id" написано на нижнем регистре
Игроман
Спасибо, помогло!
Null
Тест Насколько хорошо вы разбираетесь в Go?
https://nuancesprog.ru/p/2254/
@Golang_google
Айдар
Если тут есть новички, кто начал осваиваться в Go, отпишите в лс. Я создал беседу из нескольких человек, где мы сможем расти вместе).