Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱27🔥12👍5
Forwarded from Библиотека программиста | программирование, кодинг, разработка
git switch
— просто переключает веткуgit restore
— восстанавливает файл до последней зафиксированной версииgit sparse-checkout
— загружает в рабочую копию только подмножество файлов из большого репозиторияgit worktree
— управляет несколькими рабочими деревьями, связанными с одним репозиторием👉 Читать перевод & оригинал
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉16🥱5👍2❤1
Value receivers и nil
Представьте себе структуру с двумя методами: один использует pointer receiver, а другой — value receiver.
Что происходит, если receiver равен
Переменная
Однако, если мы выполняем этот код, вызов
📌 Что происходит?
Рассмотрим, что методы — это просто функции с некоторым синтаксическим сахаром. Метод
Таким образом, вышеуказанный код может быть переписан без методов следующим образом:
Теперь должно быть легко понять, почему
Для метода
Так что, если у вас есть тип с pointer/value receivers, будьте осторожны, чтобы не вызывать какие-либо методы для
#tip
Представьте себе структуру с двумя методами: один использует pointer receiver, а другой — value receiver.
package main
type S struct {
N int
}
func (s *S) PointerRcv() {
}
func (s S) ValueRcv() {
}
Что происходит, если receiver равен
nil
?
func main() {
var s *S // s равно nil
s.PointerRcv()
s.ValueRcv()
}
Переменная
s
принимает нулевое значение типа *S
, которое является nil
. Поскольку ни один из методов не обращается к receiver'у, оба вызова метода должны пройти без проблем.Однако, если мы выполняем этот код, вызов
s.ValueRcv()
вызовет панику!📌 Что происходит?
Рассмотрим, что методы — это просто функции с некоторым синтаксическим сахаром. Метод
func (s S) f()
семантически идентичен функции func f(s S)
. Method receiver становится первым аргументом функции.Таким образом, вышеуказанный код может быть переписан без методов следующим образом:
package main
type S struct {
N int
}
func PointerFunc(s *S) {
}
func ValueFunc(s S) {
}
func main() {
var s *S
PointerFunc(s)
ValueFunc(*s)
}
Теперь должно быть легко понять, почему
ValueFunc()
вызывает панику. Указатель s
должен быть разыменован при передаче его в ValueFunc()
. Разыменование nil
указателя невозможно и приводит к панике.Для метода
func (s *S) PointerRcv()
, receiver (или параметр функции во втором примере) не нуждается в разыменовании. Следовательно, паники не будет.Так что, если у вас есть тип с pointer/value receivers, будьте осторожны, чтобы не вызывать какие-либо методы для
nil
значения этого типа.#tip
👍49🥱6❤1
Реализация in-memory кэша на Go: пример с использованием дженериков и без
⚙️ map[string]interface
⚙️ Кэш со сроком действия (TTL)
⚙️ In-memory кэш с использованием дженериков
👉 Читать
⚙️ map[string]interface
⚙️ Кэш со сроком действия (TTL)
⚙️ In-memory кэш с использованием дженериков
👉 Читать
Mohitkhare
Mohit Khare
Learn about in-memory caching in Golang, it's benefits and how to implement it with and without generics with a TTL(expiry).
❤7❤🔥7🌚1
📌 Все как обычно:
☑️ разработчики настроены позитивно,
☑️ они верят, что команда Go поступает правильно,
☑️ многие считают, что Go отлично подходит для приложений с искусственным интеллектом.
💬 Что думаете на счет последнего?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🥱12🌚6🤩2
💬 Присылайте ссылку или просто напишите в комментах в стиле «был пост про …»👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱11🤔2👾1
Александр Павлов, сеньор Go-разработчик в СберМаркете, делится опытом ускорения Go-пайплайнов в PaaS.
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍8❤1😁1
{{- /*gotype: package/path.type_name*/ -}}
Речь про механизм шаблонов, который разделен на два пакета:
text/template
и html/template
. Они схожи по функциональности, с той разницей, что html/template
позволяет генерировать защищенный от внедрения HTML-код. Кроме того, они помогают в написании кода в других приложениях, включая настройку Helm и менеджера пакетов Kubernetes .👉 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱16👍7❤1🔥1😁1