~/NeonXP.log

Golang

Тернарник в Go

Хотите немного наркомании сахара для Go?

Их есть у меня:

Тернарный оператор для Go на генериках

func If[T any](condition bool, thn T, els T) T {
	if condition {
		return thn
	}
	return els
}

Плейграунд чтобы потыкать

Будет настроение — добавлю в свою либку https://neonxp.ru/go/extra , а пока, как-то так держите.

Не стоит использовать в реальном коде. Я лично не вижу никакого оправдания для использования, кроме как покекать.

Читать дальше...

Golang подборка 1

Просто собираю подборку интересных ссылок по гошке на почитать потом.

import "math"
...
// https://en.wikipedia.org/wiki/Haversine_formula
func GetDistance(lat1, lon1, lat2, lon2 float64) float64 {
    lat1 *= math.Pi / 180
    lon1 *= math.Pi / 180
    lat2 *= math.Pi / 180
    lon2 *= math.Pi / 180
    return 12742 * math.Asin(
      math.Sqrt(
        math.Pow(math.Sin((lat2-lat1)/2), 2) +
        math.Cos(lat1) *
        math.Cos(lat2) *
        math.Pow(math.Sin((lon2-lon1)/2), 2)
      )
    )
}
  • god — Утилита подгатавливающая демоны из go программы. Для меня ценное — что генерит systemd конфиги.
Читать дальше...

Jsonnet

Редко такое бывает, что случайно натыкаешься на какую-то технологию и она вызывает вау-эффект и буквально переворачивает всё верх дном. На днях для меня такой технологией стал Jsonnet от Google.

Jsonnet
Jsonnet

В кратце, это надмножество JSON являющееся языком описания шаблонов. Пока звучит не очень круто, да? На деле это офигенный Тьюринг полный функциональный язык, результатом выполнения которого будет сформированый JSON (и не только) документ(или несколько документов1).

Если интересно, рекомендую сразу переходить к туториалу — https://jsonnet.org/learning/tutorial.html.

Читать дальше...