◆ Embedding (встраивание) структур позволяет одной структуре наследовать поля и методы другой, делая их частью себя. Это может использоваться для создания новых типов данных, которые включают в себя свойства и функциональность существующих структур.
📌 Предположим, у вас есть структура:
type Person struct {
Name string
Address string
SSN string
}
и вы хотите создать тип
customer
.type Customer struct {
Person
ID int
}
◆
Person
является embedded структурой. Все ее поля и методы встраиваются во внешнюю структуру.◆ Приложению, которому нужен тип
Customer
, не интересен номер социального страхования клиента и не должен быть, но SSN неизбежно встраивается в Customer
вместе с полями Name
и Address
.◆ Любой код, имеющий доступ к переменной
Customer
, таким образом, имеет доступ и к SSN
клиента.func main() {
p := Person{
Name: "John Doe",
Address: "Doe Blvd, Doe City"
SSN: "123-45-6789",
}
c := Customer{
Person: p,
}
fmt.Println(c.SSN)
}
◆ Будьте осторожны с встраиванием структур. Это очень полезная техника, но вы можете случайно открыть доступ к полям или функциям, к которым клиентский код не должен иметь доступа.
#tip
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱32👍20🤔6🔥2❤1
DDD — сложный набор правил, который требует насмотренности. Автор рассмотрел подход, который заставит думать в рамках терминов предметной области и событий, которые там происходят. Он легко ложится на приложения с CQRS и Event Sourcing.
💬 В комментариях пишут, мол, автор тащит подходы из Java в Go. А вы как думаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
DDD в golang. Превозмогая трудности
В последнее время достаточно много выступлений, посвященных реализации подходов Domain Driven Design(DDD) в golang. Я не буду останавливаться на value object, они в golang хорошо реализуются с помощью...
👍18🤔5🥱4
Extracting OpenStreetMap With Go.pdf
1.1 MB
OpenStreetMap — некоммерческий веб-картографический проект, который может использовать каждый для извлечения и анализа данных. Например, можно узнать, сколько ресторанов суши существует в Манхэттене.
👉 Читайте на Medium или в PDF
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍7⚡1
🏃 Самоучитель по Go для начинающих. Часть 1. Особенности и сфера применения Go, установка, настройка
В этой статье разберем основные особенности Go, его преимущества и недостатки, а также настроим рабочее пространство для комфортной разработки.
🔗 Читать статью
🔗 Зеркало
В этой статье разберем основные особенности Go, его преимущества и недостатки, а также настроим рабочее пространство для комфортной разработки.
🔗 Читать статью
🔗 Зеркало
🥱10⚡1🔥1👏1
Лайвкодинг на собеседованиях — это ок?
Anonymous Poll
32%
Конечно
22%
Нет, зачем тогда тестовое?
29%
Не принципиально
17%
Посмотреть результаты
👍8
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🔤 Азбука SQL в примерах. Часть 1. Создаем базу данных и первую таблицу
С помощью этого короткого руководства в трех частях вы создадите базу данных, добавите в неё записи, а затем выполните несколько запросов для их обработки. В первой части мы узнаем, что скрывается за тремя буквами SQL и начнем двигаться к поставленной цели.
🔗 Читать статью
🔗 Зеркало
С помощью этого короткого руководства в трех частях вы создадите базу данных, добавите в неё записи, а затем выполните несколько запросов для их обработки. В первой части мы узнаем, что скрывается за тремя буквами SQL и начнем двигаться к поставленной цели.
🔗 Читать статью
🔗 Зеркало
🥱6👍1🔥1👏1
Александр Парфенов, бэкенд-разработчик в Тинькофф Инвестициях и автор InvestAPI SDK, рассказывает об автоматизации торговых стратегий при помощи Tinkoff INVEST API и Go.
👉 Читать
👉 Читать
🔥14👍5🥱3
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📯Внимание всем отважным героям и искателям приключений!
«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!
Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.
💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!
Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.
💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
🔥4🎉2🥱2❤1😁1
context.Context
?HTTP-обработчики могут использовать контекст для управления тайм-аутами запросов или отменой в рамках запроса. Тип
Context
также позволяет передавать значения (например, идентификатор пользователя, связанный с запросом) другим функциям.❓Следует ли использовать этот механизм для передачи информации по цепочке вызовов запроса? Или лучше использовать обычную структуру?
Вот две причины, по которым использование
Context
для передачи значений может быть плохой идеей:Значения в
Context
представляют собой пары ключ/значение, где ключ и значение являются пустыми интерфейсами (т. е. any
). Другими словами, значения в контексте — это как мешок со всем подряд. Компилятор не может помочь вам отловить ошибки типов или даже проверить, есть ли информация. Удачи в устранении неполадок 😉Если вы видите функцию, принимающую параметр
Context
, вы не можете сказать, что внутри. Если вы видите функцию, которая принимает параметр структуры, вы можете ясно видеть, что данные передаются, и что это за данные.❓Но разве
doSomething(ctx)
не выглядит намного чище, чем doSomething(ctx, someStruct)
?Чистый код сам по себе не является целью. Код не чист только потому, что он короткий. Код чистый, если читатель может ясно видеть, что он делает.
❓Так
context.WithValue()
следует избегать?Значения в контексте могут быть полезны, если они не критичны для бизнес-логики приложения. Например, совершенно нормально передавать идентификаторы запросов для логирования или измерения метрик. Читатель все равно сможет понять логику кода, и если что-то пойдет не так с этим идентификатором, это повлияет только на логирование или метрики приложения, но не на результат запроса.
Context
.#tip
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍17💯5🥱3❤1
Optimizing Go string operations with practical examples.pdf
1.3 MB
👾Оптимизация строковых операций Go на примерах
Настало время Advent of Code, поэтому обработка строк приобретает первостепенное значение. Автор взял простую задачу со второго дня и ускорил ее почти в 5 раз с минимальными изменениями.
👉 Читайте на Medium или в PDF
Настало время Advent of Code, поэтому обработка строк приобретает первостепенное значение. Автор взял простую задачу со второго дня и ускорил ее почти в 5 раз с минимальными изменениями.
👉 Читайте на Medium или в PDF
🔥11👍2🤔1
Forwarded from Библиотека питониста | Python, Django, Flask
🔤 Азбука SQL в примерах. Часть 2. Ограничения, которые упрощают жизнь
В предыдущей части мы выяснили, что такое SQL, создали свою первую базу данных и добавили в неё первую таблицу. Пришло время узнать, как сделать добавление данных в неё более простым и надёжным.
🔗 Читать статью
🔗 Зеркало
В предыдущей части мы выяснили, что такое SQL, создали свою первую базу данных и добавили в неё первую таблицу. Пришло время узнать, как сделать добавление данных в неё более простым и надёжным.
🔗 Читать статью
🔗 Зеркало
👍4❤1🥱1
Давайте пофантазируем! Если отмотать время назад и вернуться к моменту, когда вы только выбрали Go для дальнейшего изучения и построения карьеры, ваше итоговое решение могло измениться?
💬 Вы выбрали бы Go? Может быть Python? Или Rust/C#/C/C++/PHP...?
👍 — конечно Go
🤔 — другой ЯП
👏 — я и так перешел на Go с другого языка
❤️ — ЯП не имеет значения — это всего лишь инструмент
#холивар
💬 Вы выбрали бы Go? Может быть Python? Или Rust/C#/C/C++/PHP...?
👍 — конечно Go
🤔 — другой ЯП
👏 — я и так перешел на Go с другого языка
❤️ — ЯП не имеет значения — это всего лишь инструмент
#холивар
👏217❤131👍66🤔13⚡1
🗺 Визуализация картографических данных с помощью Go и Leaflet JS
Miki Tebeka из Ardan Labs решил визуализировать свои прогулки и написал простой сервис на Go, который принимает файл GPX с необработанными данными и возвращает интерактивную карту с отмеченным маршрутом. Под катом — примеры и подробное объяснение.
👉 Читать
Miki Tebeka из Ardan Labs решил визуализировать свои прогулки и написал простой сервис на Go, который принимает файл GPX с необработанными данными и возвращает интерактивную карту с отмеченным маршрутом. Под катом — примеры и подробное объяснение.
👉 Читать
👍23🔥4🤔1
⚡️Свершилось: канал с книгами только по Go
Мы создали для вас канал, куда будем публиковать самые полезные книги только для Go-разработчиков. Подписывайтесь!
👉 Книги для Go разработчиков
Мы создали для вас канал, куда будем публиковать самые полезные книги только для Go-разработчиков. Подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12😁8🤔2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Ebitengine (ранее Ebiten) — популярный движок 2D-игр для Go, который позволяет создавать игры на многочисленных платформах, включая мобильные устройства и Nintendo Switch.
Разработчик движка Hajime Hoshi празднует десятилетие проекта и рассказывает, что произошло с ним в этом году. Под катом много интересного, включая видео некоторых выпущенных игр на базе Ebitengine.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥6🥱1
Автор написал простейшее приложение и описал шаги по созданию пайплайна для деплоя веб-приложения на Linux-сервер. Ниже — его полный пример:
name: Golang-App-Workflow
'on':
push:
branches:
- main
jobs:
build-GoAppliation:
runs-on: ubuntu-latest
steps:
- name: Checkout-Repository
uses: actions/checkout@v4
- name: Setup-Golang
uses: actions/setup-go@v4
with:
go-version: '1.21'
check-latest: true
- run: go version
- name: Install-Golang-Dependencies
run: go mod download
- name: Build-Golang-App
run: GOOS=linux go build -o build/MusicAlbumAPI -v
- name: Display-Build-Golang-App
run: ls -R build/
- name: Create-Env-File
run: 'echo "APIKey=${{ secrets.APIKey }}" > build/.env'
- name: Display-Env-File
run: cat build/.env
- name: Run-Unit-Test-Golang-App
run: go test
- name: Copy-Build-Golang-App
uses: appleboy/scp-action@master
with:
host: '${{ secrets.VM_HOST }}'
username: '${{ secrets.VM_USERNAME }}'
key: '${{ secrets.VM_SSH_KEY }}'
port: '${{ secrets.VM_SSH_PORT }}'
source: build/
target: /var/www/GoApplications
- name: Deploy-Build-Golang-App-To-Ubuntu-VM
uses: appleboy/ssh-action@master
with:
host: '${{ secrets.VM_HOST }}'
username: '${{ secrets.VM_USERNAME }}'
key: '${{ secrets.VM_SSH_KEY }}'
port: '${{ secrets.VM_SSH_PORT }}'
script: |
cd /var/www/GoApplications/build
ls -l
sudo systemctl reload nginx
sudo systemctl status nginx
Please open Telegram to view this post
VIEW IN TELEGRAM
www.rebin.dev
GitHub Actions CI/CD pipeline to deploy Go application
Automating the deployment and building processes of your application can help in delivering your products quickly, reducing costs, and making them easier to produce.
👍27🔥9❤2😁1
🏃 Самоучитель по Go для начинающих. Часть 2. Ресурсы для изучения Go с нуля
Расскажем про актуальные и полезные источники информации по языку Go, которые подойдут для самостоятельного изучения и помогут погрузиться в захватывающий мир программирования.
🔗 Читать статью
🔗 Ссылка на первую часть
Расскажем про актуальные и полезные источники информации по языку Go, которые подойдут для самостоятельного изучения и помогут погрузиться в захватывающий мир программирования.
🔗 Читать статью
🔗 Ссылка на первую часть
🔥9👍3❤1