#video #beginner
Если вы соскучились по интересным заданиям и практическим упражнениям, в этом курсе они есть. Например, вы научитесь работать с авторизацией, СУБД PostgreSQL, MVC, REST и многим другим.
https://bit.ly/2RIBtTf
Если вы соскучились по интересным заданиям и практическим упражнениям, в этом курсе они есть. Например, вы научитесь работать с авторизацией, СУБД PostgreSQL, MVC, REST и многим другим.
https://bit.ly/2RIBtTf
#beginner
Топ 10 ошибок, которые часто допускают разработчики на проектах на Golang.
https://prglb.ru/1293n
Топ 10 ошибок, которые часто допускают разработчики на проектах на Golang.
https://prglb.ru/1293n
Medium
The Top 10 Most Common Mistakes I’ve Seen in Go Projects
This post is my top list of the most common mistakes I’ve seen in Go projects.
#beginner #web
Небольшой онлайн-туториал по основам создания веб-приложений на Go. Вы узнаете про роутинг, основы Request/Response, обработку форм и многое другое.
https://gowebexamples.com/
Небольшой онлайн-туториал по основам создания веб-приложений на Go. Вы узнаете про роутинг, основы Request/Response, обработку форм и многое другое.
https://gowebexamples.com/
#beginner
В этой статье автор покажет, как писать простые приложения для командной строки.
https://bit.ly/2MfpC9V
В этой статье автор покажет, как писать простые приложения для командной строки.
https://bit.ly/2MfpC9V
freeCodeCamp.org
How to write fast, fun command-line applications with Golang
by Peter Benjamin How to write fast, fun command-line applications with Golang ASCII credit: belbomemo [https://gist.github.com/belbomemo/b5e7dad10fa567a5fe8a] A while back, I wrote an article about “Writing Command-Line Applications in NodeJS [https://m…
#beginner
Основы Go для самых начинающих. Вы узнаете, что такое Go, какие у него особенности, где часто применяется и многое другое.
https://prglb.ru/4up53
Основы Go для самых начинающих. Вы узнаете, что такое Go, какие у него особенности, где часто применяется и многое другое.
https://prglb.ru/4up53
#patterns #beginner
Знание и умение пользоваться паттернами проектирования позволяет вам писать легко поддерживаемый и расширяемый код. В этих репозиториях представлены как теоретическое описание паттернов, так и примеры их реализации на языке Go.
https://prglb.ru/4eu96
https://prglb.ru/1opdp
Знание и умение пользоваться паттернами проектирования позволяет вам писать легко поддерживаемый и расширяемый код. В этих репозиториях представлены как теоретическое описание паттернов, так и примеры их реализации на языке Go.
https://prglb.ru/4eu96
https://prglb.ru/1opdp
#beginner #regex
Регулярные выражения - это чрезвычайно полезная возможность работать с текстом эффективно и точно. Если вам нужно найти совпадение в большом отрезке текста или даже найти все совпадения по паттерну, вам нужны регулярки. В этом туториале вы познакомитесь с тем, какие есть ф-ции по работе с регулярными выражениями в Go.
https://github.com/StefanSchroeder/Golang-Regex-Tutorial
Регулярные выражения - это чрезвычайно полезная возможность работать с текстом эффективно и точно. Если вам нужно найти совпадение в большом отрезке текста или даже найти все совпадения по паттерну, вам нужны регулярки. В этом туториале вы познакомитесь с тем, какие есть ф-ции по работе с регулярными выражениями в Go.
https://github.com/StefanSchroeder/Golang-Regex-Tutorial
GitHub
GitHub - StefanSchroeder/Golang-Regex-Tutorial: Golang - Regular Expression Tutorial
Golang - Regular Expression Tutorial. Contribute to StefanSchroeder/Golang-Regex-Tutorial development by creating an account on GitHub.
#beginner #библиотека
Библиотека для парсинга данных с формы и джсон с http запросов.
https://github.com/albrow/forms
Библиотека для парсинга данных с формы и джсон с http запросов.
https://github.com/albrow/forms
GitHub
GitHub - albrow/forms: A lightweight go library for parsing form data or json from an http.Request.
A lightweight go library for parsing form data or json from an http.Request. - albrow/forms
#beginner
Понимание структур данных в Golang
Golang приобрел огромные возможности в разработке программного обеспечения за несколько лет после его запуска.
#статьядня
https://prglb.ru/2t43p
Понимание структур данных в Golang
Golang приобрел огромные возможности в разработке программного обеспечения за несколько лет после его запуска.
#статьядня
https://prglb.ru/2t43p
Medium
Understanding Data Structures in Golang
Golang has gained tremendous grounds in Software development in few years of its launch.
#beginner #best_practices
Немного лучших практик по Go начинающим разработчикам.
https://prglb.ru/4edc3
Немного лучших практик по Go начинающим разработчикам.
https://prglb.ru/4edc3
peter.bourgon.org
Peter Bourgon · Go best practices, six years in
Generally good things to do when writing Go code, in 2016 and beyond.
Размер типа структуры без полей ненулевого размера равен нулю. Размер типа массива, длина которого равна нулю или размер элемента которого равен нулю, также равен нулю. Это можно доказать с помощью примера выше.
В Go размеры часто обозначаются как значения int. Это означает, что максимально возможная длина массива равна MaxInt, значение которой равно 2^63-1 в 64-битных ОС. Однако длина массивов с ненулевыми размерами элементов жестко ограничена стандартным компилятором Go и рантаймом.
📌 Например👇
#tip #go #beginner
В Go размеры часто обозначаются как значения int. Это означает, что максимально возможная длина массива равна MaxInt, значение которой равно 2^63-1 в 64-битных ОС. Однако длина массивов с ненулевыми размерами элементов жестко ограничена стандартным компилятором Go и рантаймом.
📌 Например👇
var x [1<<63-1]struct{} // okay
var y [2000000000+1]byte // compilation error
var z = make([]byte, 1<<49) // panic: runtime error: makeslice: len out of range
#tip #go #beginner
Мы можем использовать цикл for-range для моделирования циклов for i in 0..N в некоторых других языках, как показано на примере выше.
Шаги первых двух циклов должны быть известны во время компиляции, тогда как у последнего нет этого требования. Но последний выделяет чуть больше памяти (в стеке, под заголовок слайса).
#tip #go #beginner
Шаги первых двух циклов должны быть известны во время компиляции, тогда как у последнего нет этого требования. Но последний выделяет чуть больше памяти (в стеке, под заголовок слайса).
#tip #go #beginner
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#tip #go #beginner
О случайном порядке итерации типа map
Встроенные мапы Go не поддерживают порядок входных значений. Поэтому при использовании цикла for-range для итерации записей мапы порядок записей рандомизируется. Запустив код из примера, вы увидите, что результаты могут отличаться.
Но обратите внимание, что функции вывода на экран в стандартном пакете fmt сортируют записи (по ключам) мапы. То же самое происходит с выводами вызовов функции json.Marshal.
О случайном порядке итерации типа map
Встроенные мапы Go не поддерживают порядок входных значений. Поэтому при использовании цикла for-range для итерации записей мапы порядок записей рандомизируется. Запустив код из примера, вы увидите, что результаты могут отличаться.
Но обратите внимание, что функции вывода на экран в стандартном пакете fmt сортируют записи (по ключам) мапы. То же самое происходит с выводами вызовов функции json.Marshal.
#tip #go #beginner
Использование ссылки на переменную итератора цикла
В Go переменная итератора цикла — это единственная переменная, которая принимает разные значения на каждой итерации цикла. Это очень эффективно, но может привести к непреднамеренному поведению при неправильном использовании. Смотрите пример слева, который выдаст неожиданные результаты:
На каждой итерации мы добавляем адрес
Новый вывод программы — это то, что ожидалось:
Строка
Хотя этот пример может показаться несколько очевидным, такое же неожиданное поведение может быть более скрытым в некоторых других случаях. Например, переменная цикла может быть массивом, а ссылка может быть срезом (пример справа). В результате получаем:
Использование ссылки на переменную итератора цикла
В Go переменная итератора цикла — это единственная переменная, которая принимает разные значения на каждой итерации цикла. Это очень эффективно, но может привести к непреднамеренному поведению при неправильном использовании. Смотрите пример слева, который выдаст неожиданные результаты:
Values: 3 3 3
Addresses: 0x40e020 0x40e020 0x40e020
На каждой итерации мы добавляем адрес
i
к срезу out
, но поскольку это одна и та же переменная, мы добавляем тот же адрес, который в итоге содержит последнее значение, присвоенное i
. Одно из решений — скопировать переменную цикла в новую переменную:for i := 0; i < 3; i++ {
i := i
out = append(out, &i)
}
Новый вывод программы — это то, что ожидалось:
Values: 0 1 2
Addresses: 0x40e024 0x40e028 0x40e032
Строка
i := i
копирует переменную цикла i в новую переменную, ограниченную блоком тела цикла for, также называемым i
. Адрес новой переменной — это тот, который добавляется к массиву. В каждой итерации цикла создается новая переменная.Хотя этот пример может показаться несколько очевидным, такое же неожиданное поведение может быть более скрытым в некоторых других случаях. Например, переменная цикла может быть массивом, а ссылка может быть срезом (пример справа). В результате получаем:
Values: [[3] [3] [3]]