Alexandr
передавать наверное как раз можно указатель на весь массив, тока вот если он лежит в мапе не получиться
UI
https://go.dev/play/p/DlF9nlduq7j Типо такого?
Типа да, у тебя прикольно получилось
Vladislav
а можно подробней
совсем подробно в сорцах описано
Alexandr
совсем подробно в сорцах описано
тут я понял про что речь
UI
Друзья, я тут разные опыты провожу и не могу понять компилятор ругается undefined Student
UI
package main import "fmt" func main() { type Student struct { Name string Age int } st1 := Student{ Age: 30, Name: "John", } fmt.Println(st1) check(st1) } func check(val Student) { fmt.Println(val) }
Anton
а откуда check будет знать о студенте? )
Anton
о структуре Student, если быть точнее
Anton
которую ты объявляешь в main func
UI
Аа, ясно теперь
UI
Спасибо
UI
а функция main может содержать в себе другие функции?
Anton
есть такая вещь как анонимные функции
Anton
погугли
UI
то есть только через замыкание получается?
Anton
а тебе для чего это? просто изучаешь или ты пытаешься сделать так, чтобы твой check видел структуру твою ? )
Юра (Юрий Александрович)
то есть только через замыкание получается?
Замыкание тут не при чем. Внутри функции можно объявлять только "безымянные" функции, которые должны либо быть вызваны тут же, либо быть присвоены переменной типа "функция", и переданы куда-то либо вызваны позже.
Anton
о всё, залетела жоская хелпа, я отключаюсь
UI
а тебе для чего это? просто изучаешь или ты пытаешься сделать так, чтобы твой check видел структуру твою ? )
я прочитал что в go все передается по значению поэтому хотел просто передать туда структуру и посмотреть ссылаются ли обе структуры на один и тот же адрес
UI
в принципе я верю книжке но всё же хочу потыкать чтобы чуть набить руку привыкнуть к синтаксису и прочее
Юра (Юрий Александрович)
Юра (Юрий Александрович)
то есть только через замыкание получается?
Замыкание - это способ передачи переменной экземпляру анонимной функции.
Юра (Юрий Александрович)
я прочитал что в go все передается по значению поэтому хотел просто передать туда структуру и посмотреть ссылаются ли обе структуры на один и тот же адрес
Передача по значению - это как раз передача копий значений переменных. А переменные, упомянутые в объявлении функции выделяются в стеке, соответственно при вызове функции для них выделяется новое место и присваиваются новые адреса, которые точно раньше нечем не были заняты.
Юра (Юрий Александрович)
Поэтому, если внутри функции смотреть адрес переменной, объявленной в объявлении функции, мы увидим адрес, который больше не увидим нигде.
Юра (Юрий Александрович)
А вот если в функции ссылаться на переменную, объявленную за пределами функции - глобально в пределах пакета - в надстоящей функции (то самое замыкание), то тогда внутри функции будет виден тот же адрес переменной, что и снаружи ее.
UI
Ладно сейчас попробую разобраться, спасибо
Юра (Юрий Александрович)
Пожалуйста. Если что, спрашивай
UI
package main import "fmt" func main() { type Student struct { Name string Age int } st1 := Student{ Age: 30, Name: "John", } fmt.Println(&st1) check := func(val *Student) { fmt.Println(&val) } check(&st1) } вроде получилось только вот первый принт выводит &{Jogn, 30} и всё
DisboardTetta
Добрый день, подскажите пожалуйста, пытаюсь создать именованные константы, например: Есть структура с полями user string и password string, и мне нужно создать ссылки на доступные варианты заполнения этих структур, например SystemUser.User1 выдаст мне структуру с user: "Nickname1", password: "passtest", а ссылка SystemUser.User2 выдаст мне уже user:"Admin", password: "adminpass". Как это реализовать средствами enum и struct?
Илья
По логике я надеялся что и в первом принте у меня выведится адрес в памяти
Это особенность fmt.Print, он пытается вывести структуру
Илья
Попробуй просто println(&st1)
Matvei
Ребят, кто может объяснить, желательно по буквам касательно докера, что надо сделать? Вобщем, у меня есть dockerfile который запускает мой go-app, оно подает так как начинает читать из db - здесь для меня все понятно. На локальном хосте у меня есть бд, с таблицами, я уже пробывал делать дамп и ресторить в контейнере, но вот чего я не понимаю. Как мне в docker-compose это сделать, чтобы не делать так постоянно руками или можно как-то через volume, чтобы я потом мог развернуть. Поправьте меня если я что-то не так понял
Matvei
Как сделать так, чтобы бд в контейнере сохраняла свои данные?
Хочу чтобы созданный контейнер был уже с данными
Илья
Хочу чтобы созданный контейнер был уже с данными
Можно добавлять данные с помощью миграций
Matvei
Моими из дампа
Илья
Моими из дампа
Создать Dockerfile, где дапм будет копироваться в постгрес?
Matvei
А вариант с рестором? просто видел много тутуров на эту тему, но там только создается бд
Larchenko
Создать Dockerfile, где дапм будет копироваться в постгрес?
тогда надо копировать всякий раз при создании имеджа
Matvei
Что будет из это best practice, дамп или миграции7
Larchenko
та пишут же что маунт
Larchenko
миграции будут всякий раз отрабатывать
Илья
маунтить их
Предлагал это, но если маунтить, то данные будут меняться
Larchenko
?
Larchenko
ну так не менять то что маунтиться
Илья
ну так не менять то что маунтиться
Тогла придётся какие-то комманды/запросы выполнять
Илья
и получится dockerfile
Matvei
Данных много?
Не, они только для чтения, остальное пишется в другие таблицы
Larchenko
надо ток указать перед запуском с какой папки брать данные
Илья
Я только видел/делал маунт всех данных
Илья
эх)
буквально один файл и запуск через консольную утилиту (или в докере)
Matvei
Просто интересовал вопрос так вообще можно сделать
Илья
Larchenko
Larchenko
хз
ну самый простой вариант это маунт папки pgdata
Matvei
кк, буду пробывать
Larchenko
да, это же пет
пару таблиц тогда миграцией придеться
Илья
ну вот да
Я подумал, что если будут меняться данные в других таблицах, то нужно каждый раз в volume копировать read-only
Илья
Может есть способы только для одной таблицы, не изучал
Илья
да, это же пет
Тогда всё равно будешь миграции делать, используй их
Egor
Ребят, кто-нибудь здесь использовал wails (html based gui framework) ? Читаю сейчас к нему документацию, и всё безумно нравится, webview забылся как страшный сон. Но не может ведь всё быть так хорошо. Итак, кто-нибудь пользовался ? Есть недостатки, костыли ?
Привет, а вопрос можно по поводу Wails? Есть с ним одна проблема в том, что он в dev режиме, когда обнаруживает изменения в go коде и пересобирает приложение, переписывает бинарник и т.п. делает каждый раз подпапку. Так что после пары часов работы получается вот такое: X:\Projects\veverse-launcher\build\bin\build\bin\build\bin\build\...(много повторений build\bin)...\build\bin\build\bin\build\bin\build\bin\build\bin\build\bin\build\bin\build\bin\build\bin\build\bin\build\bin\veverse-launcher-dev-dev-dev-dev...(много повторений -dev)...exe Ощущение такое, что он неправильно каждый раз определяет папку, куда собирать. Либо преднамеренно так делает, но в этом я смысла не вижу, оно очень быстро разрастается до таких длинных путей, что ОС запускать такие приложения не может. Собственно, вопрос в том, как это поправить можно, чтобы руками каждый раз не перезатирать.
Alexandr
https://github.com/EngoEngine/ecs это изучали?
Да смотрел но мне не понравился подход. Мы создаем системы и все необходимо писать самому добавление/удаление компонентов и так далее.. и entity мы должны создать структуру. Как мне кажется теряется смысл шаблона т.к. для добавления нового компонента надо много переписать
Alexandr
Должно быть проще, да сам компоненты надо описать но далее мы создаем мир, создаем сущность пихаем в нее любые компоненты а в системах работаем с ними. Надо добавить компонент ок, описал компонент , добавил строчку что к сущности цепляем данный компонент, все в любой системе можем получить сущность и ее компоненты
Yegor
Чем ответ го на питонячью ursin,'у?