Возвращение структур
Рассмотрим преимущества возвращения структур из функций Go: эксплицитность, гибкость, прямой контроль над полями и методами объекта.
Изучим потенциальный недостаток — сильную связанность — и выработаем стратегии эффективного ограничения его влияния.
Преимущества и особенности возвращения структур Go с учетом потенциальных проблем сильной связанности пригодятся для создания хорошо структурированного, сопровождаемого кода.
Эксплицитность
Для возвращаемой структуры характерны четкая видимость, доступ к ее полям и методам. Это как подробная схема, на которой раскрываются все нюансы объекта.
Получая прямой доступ к свойствам структуры, мы имеем четкое представление о том, что внутри нее, поэтому работа с данными, манипулирование ими упрощаются.
Рассмотрим пример:
type Person struct {
Name string
Age int
Email string
}
func NewPerson(name string, age int, email string) Person {
return Person{
Name: name,
Age: age,
Email: email,
}
}
func main() {
person := NewPerson("John Doe", 30, "[email protected]")
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
fmt.Println("Email:", person.Email)
}
В функции NewPerson возвращается структура Person с информацией о человеке. Возвращая структуру напрямую, мы получаем явный доступ к ее полям Name, Age, Email в вызывном коде.
Благодаря такой эксплицитности необходимые данные легко извлечь и использовать.
Гибкость
Возвращаемыми структурами обеспечиваются непревзойденные контроль и гибкость при определении конкретных поведений и методов. Структура проектируется с именно таким функционалом, который требуется.
Благодаря возможности адаптировать ее к конкретным требованиям, код получается чище, целенаправленнее и с точным соответствием задачам приложения.
Продемонстрируем эту гибкость, обновив пример выше:
type Person struct {
Name string
Age int
Email string
}
func (p Person) Greet() {
fmt.Println("Hello, my name is", p.Name)
}
func main() {
person := Person{
Name: "John Doe",
Age: 30,
Email: "[email protected]",
}
person.Greet()
}
В структуру Person добавили метод Greet. Возвращая структуру, мы определяем конкретное поведение прямо в ее типе. В методе Greet приветствие персонализируется полем Name структуры Person.
Благодаря такой гибкости поведения инкапсулируются в самой структуре, а код чище и проще в сопровождении.
📌Читать далее
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Lama2 - это менеджер API, ориентированный на работу с текстом и оптимизированный для совместной работы через Git.
В этой статье подробно с рассказывается о разработке функционала для VSCode с Lama2 на Go. От проблем, с которыми разработчики столкнулись во время разработки до инсайтов, которые были реализованы за год работы.
▪Статья
▪Lama2
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Failsafe-go - новая библиотека для создания отказоустойчивых приложений на Go. Она работает путем обертывания исполняемой логики одной или несколькими функциями отказоустойчивости, которые можно комбинировать и компоновать по мере необходимости. Функции включают в себя
Retry, Circuit Breaker, Rate Limiter, Timeout, Bulkhead и Fallback
.Failsafe-go поможет построить гибкую, простую в использовании реализацию
retry и circuit breaker,
а также возможность комбинировать их с другими стратегиями отказоустойчивости, что предлагают библиотеки на других языках. ▪Project
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡ Бесплатные курсы: DevOps и Cloud:
❯ Бесплатный онлайн-курс DevOps
https://academiait.ru/course/devops/
❯ Golang бесплатный курс с нуля
https://stepik.org/course/179158/promo
❯ Youtube
https://www.youtube.com/playlist?list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66
❯ Linux
http://mygreatlearning.com/academy/learn-for-free/courses/linux-tutorial
❯ Основы программирования для Linux
https://stepik.org/course/548/promo
❯ Основы Linux
https://stepik.org/course/762/promo
❯ Основы Linux
https://stepik.org/course/762/promo
❯ GIT
http://simplilearn.com/learn-git-basics-skillup
❯ DevOps
http://openclassrooms.com/courses/7853556-discover-the-devops-methodology
❯ CI/CD
http://simplilearn.com/free-ci-cd-online-training-course-skillup
❯ Docker
http://cognitiveclass.ai/courses/docker-essentials
❯ Kubernetes
http://simplilearn.com/learn-kubernetes-basics-free-course-skillup
❯ GitHub
http://mygreatlearning.com/academy/learn-for-free/courses/github-tutorial-for-beginners
❯ Cloud Computing
http://cognitiveclass.ai/courses/introduction-to-cloud
❯ AWS
http://openclassrooms.com/courses/7864796-discover-cloud-with-amazon-web-services
❯ Azure
http://mygreatlearning.com/academy/learn-for-free/courses/microsoft-azure-essentials
❯ GCP
http://simplilearn.com/learn-google-cloud-platform-fundamentals-free-course-skillup
❯ Serverless
http://mygreatlearning.com/academy/learn-for-free/courses/serverless-computing
❯ Jenkins
http://mygreatlearning.com/academy/learn-for-free/courses/jenkins-tutorial
❯ Puppet
http://simplilearn.com/free-course-to-learn-puppet-basics-skillup
❯ Chef
http://simplilearn.com/chef-in-devops-basics-free-course-skillup
❯ Ansible
http://simplilearn.com/learn-ansible-basics-free-course-skillup
❯ Selenium
http://mygreatlearning.com/academy/learn-for-free/courses/selenium-basics
❯ VirtualBox & vSphere
http://openclassrooms.com/courses/7163136-set-up-virtual-machines-using-virtualbox-and-vsphere
❯ Специализация Python Scripting for DevOps
https://www.coursera.org/specializations/python-scripting-devops
@Golang_google
❯ Бесплатный онлайн-курс DevOps
https://academiait.ru/course/devops/
❯ Golang бесплатный курс с нуля
https://stepik.org/course/179158/promo
❯ Youtube
https://www.youtube.com/playlist?list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66
❯ Linux
http://mygreatlearning.com/academy/learn-for-free/courses/linux-tutorial
❯ Основы программирования для Linux
https://stepik.org/course/548/promo
❯ Основы Linux
https://stepik.org/course/762/promo
❯ Основы Linux
https://stepik.org/course/762/promo
❯ GIT
http://simplilearn.com/learn-git-basics-skillup
❯ DevOps
http://openclassrooms.com/courses/7853556-discover-the-devops-methodology
❯ CI/CD
http://simplilearn.com/free-ci-cd-online-training-course-skillup
❯ Docker
http://cognitiveclass.ai/courses/docker-essentials
❯ Kubernetes
http://simplilearn.com/learn-kubernetes-basics-free-course-skillup
❯ GitHub
http://mygreatlearning.com/academy/learn-for-free/courses/github-tutorial-for-beginners
❯ Cloud Computing
http://cognitiveclass.ai/courses/introduction-to-cloud
❯ AWS
http://openclassrooms.com/courses/7864796-discover-cloud-with-amazon-web-services
❯ Azure
http://mygreatlearning.com/academy/learn-for-free/courses/microsoft-azure-essentials
❯ GCP
http://simplilearn.com/learn-google-cloud-platform-fundamentals-free-course-skillup
❯ Serverless
http://mygreatlearning.com/academy/learn-for-free/courses/serverless-computing
❯ Jenkins
http://mygreatlearning.com/academy/learn-for-free/courses/jenkins-tutorial
❯ Puppet
http://simplilearn.com/free-course-to-learn-puppet-basics-skillup
❯ Chef
http://simplilearn.com/chef-in-devops-basics-free-course-skillup
❯ Ansible
http://simplilearn.com/learn-ansible-basics-free-course-skillup
❯ Selenium
http://mygreatlearning.com/academy/learn-for-free/courses/selenium-basics
❯ VirtualBox & vSphere
http://openclassrooms.com/courses/7163136-set-up-virtual-machines-using-virtualbox-and-vsphere
❯ Специализация Python Scripting for DevOps
https://www.coursera.org/specializations/python-scripting-devops
@Golang_google
В Go 1.21 добавлен новый порт, ориентированный на API системных вызовов WASI preview. Этот порт основан на существующем порте WebAssembly, представленном в Go 1.1.
WebAssembly (или Wasm) — это бинарный формат, запускаемый в браузере, виртуальная машина, и результат компиляции с языка высокого уровня.
Wasm это не язык программирования, подобно тому как байт-код Java это не язык программирования, а результат компиляции и запускаемый блок кода.
Кто-то очень умный сказал, что название web assembly (то есть «ассемблер для веба») полностью неправильное, потому что это не ассемблер (не язык программирования) и он никак не связан с вебом (потому что это просто виртуальная машина).
https://go.dev/blog/wasi
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Hoverfly - это легкий инструмент с открытым исходным кодом для моделирования API, написанный на Go.
С помощью Hoverfly можно создавать реалистичные симуляции работы с API.
git clone https://github.com/SpectoLabs/hoverfly.git
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
📕 Почитать:
— В Go меняется фундаментальная вещь — цикл
— Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
— Конкурентность — это не параллелизм
— Книги для Golang-разработчиков: подборка для программистов с опытом
— Планирование в Go: Часть III — Конкурентность
— How to build a Slack Bot in Go
— Mastering Golang Statements: Unknown to Expert
— Crafting a Language Server in Golang: A VSCode LSP for Lama2
— Mastering writing Packages with Go when working with the Azure SDK.
— 16. Online Location Information Synchronization
— Integration Test MySQL Store (Go)
— Infrastructure as Code best practices
— Understanding CPU Cache and Prefetching in Go
— Making Dynamic Website Thumbnail
— Stop LLM/GenAI hallucination fast: Serverless Kendra RAG with GO
📌 Посмотреть:
🌐 Уроки Golang с нуля /#29 - Дженерики/обобщения (⏱ 10:52)
🌐 Уроки Golang с нуля /#30 - Горутины (⏱ 08:09)
🌐 What Is THE BEST Web Framework In Golang? Why? (⏱ 14:39)
🌐 Domain Driven Design (DDD) in Golang!? (⏱ 11:29)
Хорошего дня!
@Golang_google
📕 Почитать:
— В Go меняется фундаментальная вещь — цикл
— Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
— Конкурентность — это не параллелизм
— Книги для Golang-разработчиков: подборка для программистов с опытом
— Планирование в Go: Часть III — Конкурентность
— How to build a Slack Bot in Go
— Mastering Golang Statements: Unknown to Expert
— Crafting a Language Server in Golang: A VSCode LSP for Lama2
— Mastering writing Packages with Go when working with the Azure SDK.
— 16. Online Location Information Synchronization
— Integration Test MySQL Store (Go)
— Infrastructure as Code best practices
— Understanding CPU Cache and Prefetching in Go
— Making Dynamic Website Thumbnail
— Stop LLM/GenAI hallucination fast: Serverless Kendra RAG with GO
📌 Посмотреть:
🌐 Уроки Golang с нуля /#29 - Дженерики/обобщения (⏱ 10:52)
🌐 Уроки Golang с нуля /#30 - Горутины (⏱ 08:09)
🌐 What Is THE BEST Web Framework In Golang? Why? (⏱ 14:39)
🌐 Domain Driven Design (DDD) in Golang!? (⏱ 11:29)
Хорошего дня!
@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
🏗 Bubble Tea
Фреймворк на Go, который позволяет легко создавать красивые и функциональные терминальные приложения.
• Github
• Примеры с кодом
• Docs
@Golang_google
Фреймворк на Go, который позволяет легко создавать красивые и функциональные терминальные приложения.
package main
import (
"fmt"
"os"
tea "github.com/charmbracelet/bubbletea"
)
• Github
• Примеры с кодом
• Docs
@Golang_google
Go-hcaptcha — библиотека, написанная на GO для решения
капчи
.Для решения необходим URL сайта (не домена!), а также ключ сайта, который можно найти в HTML-файле сайта с вызовом
hCaptcha
.c, err := NewChallenge(siteUrl, siteKey)
if err != nil {
panic(err)
}
err = c.Solve(&GuessSolver{})
if err != nil {
panic(err)
}
fmt.Println(c.Token()) // P0_eyJ0eXAiOiJKV1QiLC...
• GitHub
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
go-exploit - это фреймворк для разработки эксплойтов на языке Go.
Эксплойт - программа, фрагмент программного, использующие уязвимости в программном обеспечении и применяемые для проведения атаки на вычислительную систему.
Фреймворк помогает разработчикам создавать небольшие, автономные эксплойты для тестирования приложений.
▪Github
▪Docs
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
1. 𝗞𝘂𝗯𝗲𝗿𝗻𝗲𝘁𝗲𝘀 𝗧𝗵𝗲 𝗛𝗮𝗿𝗱 𝗪𝗮𝘆
Пошаговое руководство по настройке кластеров Kubernetes с нуля, позволяющее получить глубокое представление о внутреннем устройстве Kubernetes.
🔗 https://github.com/kelseyhightower/kubernetes-the-hard-way
2. 𝗗𝗶𝘃𝗲
Dive - это инструмент для изучения образов Docker, помогающий DevOps специалистам анализировать содержимое образов для их дальнейшей оптимизации.
🔗 https://github.com/wagoodman/dive
3. 𝗮𝘄𝗲𝘀𝗼𝗺𝗲-𝗽𝗿𝗼𝗺𝗲𝘁𝗵𝗲𝘂𝘀
Список ресурсов, инструментов и интеграций с Prometheus, популярного инструмента мониторинга , используемого в DevOps.
🔗 https://github.com/roaldnefs/awesome-prometheus
4. 𝗚𝗼𝗥𝗲𝗹𝗲𝗮𝘀𝗲𝗿
Проект, который позволяет легко и быстро создавать deb пакеты.
🔗 https://github.com/goreleaser/goreleaser
5. 𝗗𝗲𝘃𝗢𝗽𝘀 𝗘𝘅𝗲𝗿𝗰𝗶𝘀𝗲𝘀
Предоставляет коллекцию упражнений и задач, связанных с различными DevOps топиками, для практики.
🔗 https://github.com/bregman-arie/devops-exercises
6. 𝗠𝗼𝗹𝗲𝗰𝘂𝗹𝗲
Фреймворк для тестирования кода инфраструктуры с помощью
Ansible
, помогающий в разработке и проверке ролей и плейбуков.🔗 https://github.com/ansible/molecule
7. 𝗦𝗢𝗣𝗦
SOPS (Secrets Operator for Kubernetes) упрощает управление безопасностью для Kubernetes.
🔗 https://github.com/mozilla/sops
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Redis-operator - инструмент , написанный на Go, позволяющий создавать/мониторить работу
Redis
в автономном и кластерном режиме на базе Kubernetes
. • Github
• Документация
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Опенсорс репозиторий с для изучения контейнеров (
Docker, Podman и т.д.
) и оркестровки (Kubernetes, ECS и т.д
.) от нуля и до профи.• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Create beautiful applications using Go.
Wails - это библиотека, для создания настольных приложения на Go.
Традиционный способ создания веб-интерфейсов на языке Go - это использование встроенного веб-сервера. Wails предлагает иной подход: он позволяет упаковать в один бинарник и Go-код, и веб-интерфейс. Для облегчения этой задачи предоставляются инструменты, позволяющие создавать, компилировать и упаковывать проекты.
• Доступны готовые шаблоны для быстрого создания интерфейсов
Унифицированная система обработки событий между Go и Javascript
• Мощный инструмент cli для быстрой генерации и создания проектов
• Поддерживает многоплатформенность
• Доступны собственные диалоговые окна, меню,и
• Поддержка темного/светлого режима
• Wails использует собственные механизмы рендеринга и не использует встроенные браузеры
go install github.com/wailsapp/wails/v2/cmd/wails@latest
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Статья команды об организации модуля Go
— Rust против Go: практическое сравнение
— Некоторые советы, которые я почерпнул из книги «100 ошибок в Go»
— Golang глазами PHP-программиста
— Визуализация исходного кода на языке golang
— Реверс бинарных файлов Golang с использование GHIDRA. Часть 2
— Golang error updates
— Understanding HMAC Authentication for Secure APIs
— Control Windows with Your Voice and the Magic of ChatGPT
— Go Hacktoberfest Issues
— Managing Firecracker microVMs in Go
— Build a Serverless Application for entity detection on AWS
— Your first API with GO & Nitric
— Getting Started with Golang: An Introduction for Beginners
— Qual a diferença de usar um receiver com ou sem ponteiro em Go?
— Building RESTful API with Hexagonal Architecture in Go
Посмотреть:
🌐 Архитектура проекта на Golang (⏱ 1:45)
🌐 Удаленка на 2 000 000 рублей в месяц (⏱ 09:59)
🌐 Популярная задача с собеседования в Яндекс #python #задача #программирование #собеседование (⏱ 01:00)
🌐 Grinding Leetcode for 24 hours (learning Golang)
🌐 Задача из Собеседования в Яндекс с зарплатой 85000 рублей #python #собеседование #задача #yandex (⏱ 00:59)
🌐 Levenue 2.0 Golang, Svelte And Programming Q&A (⏱ 01:39:35)
Хорошего дня!
@Golang_google
Почитать:
— Статья команды об организации модуля Go
— Rust против Go: практическое сравнение
— Некоторые советы, которые я почерпнул из книги «100 ошибок в Go»
— Golang глазами PHP-программиста
— Визуализация исходного кода на языке golang
— Реверс бинарных файлов Golang с использование GHIDRA. Часть 2
— Golang error updates
— Understanding HMAC Authentication for Secure APIs
— Control Windows with Your Voice and the Magic of ChatGPT
— Go Hacktoberfest Issues
— Managing Firecracker microVMs in Go
— Build a Serverless Application for entity detection on AWS
— Your first API with GO & Nitric
— Getting Started with Golang: An Introduction for Beginners
— Qual a diferença de usar um receiver com ou sem ponteiro em Go?
— Building RESTful API with Hexagonal Architecture in Go
Посмотреть:
🌐 Архитектура проекта на Golang (⏱ 1:45)
🌐 Удаленка на 2 000 000 рублей в месяц (⏱ 09:59)
🌐 Популярная задача с собеседования в Яндекс #python #задача #программирование #собеседование (⏱ 01:00)
🌐 Grinding Leetcode for 24 hours (learning Golang)
🌐 Задача из Собеседования в Яндекс с зарплатой 85000 рублей #python #собеседование #задача #yandex (⏱ 00:59)
🌐 Levenue 2.0 Golang, Svelte And Programming Q&A (⏱ 01:39:35)
Хорошего дня!
@Golang_google
GoReSym - это парсер символов Go, который извлекает метаданные программы (такие как архитектура процессора, ОС, версия компилятора и т.д.) метаданные имени файла, а также встроенные структуры и типы.
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
При разработке программного обеспечения часто приходится работать с несколькими базами данных, такими как MySQL, PostgreSQL или другими. Управление этими соединениями может быть непростым из-за различий в конфигурациях. Вот один из примеров решения этой проблемы.
• Полный код
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM