Как же хорошо, что есть генератор #go кода для XML. Просто вставляешь пример и получаешь рабочую структуру. Потом ток анмаршал накати.
А какие вы еще подобные генераторы знаете? Может не для го, а может и не совсем про маршалинг. Интересны именно выбовые генераторы)
https://www.onlinetool.io/xmltogo/
А какие вы еще подобные генераторы знаете? Может не для го, а может и не совсем про маршалинг. Интересны именно выбовые генераторы)
https://www.onlinetool.io/xmltogo/
Go for Cloud от JBD
ТЛДР: #go хорош для клауда.
Не знал этот трюк:
The go tool can print the Go version used to build a binary:
И этот тоже:
https://rakyll.org/go-cloud/
ТЛДР: #go хорош для клауда.
Не знал этот трюк:
The go tool can print the Go version used to build a binary:
$ go version <binary>
<binary>: go1.13.5
И этот тоже:
go version -m <binary>
<binary>: go1.13.5
<list of dependencies>
https://rakyll.org/go-cloud/
Появилась надежда, что в #go появятся более гибки билд-флаги, аля:
Правда все еще очень на этапе обсуждения, но есть шанс, что до го2 случится. А может и в след релизе.
https://github.com/golang/go/issues/25348
// +build (!arm64 && !s390x) || (arm64 && !go1.11) || gccgo || appengineПравда все еще очень на этапе обсуждения, но есть шанс, что до го2 случится. А может и в след релизе.
https://github.com/golang/go/issues/25348
GitHub
proposal: allow && and || operators and parentheses in build tags · Issue #25348 · golang/go
The review for CL 107628 reminded me of this idea,so I wanted to make a quick note of it. I think that this: // +build (!arm64 && !s390x) || (arm64 && !go1.11) || gc...
Заметил что мне в go-advice начали сыпаться звездочки, видно где-то засветился опять.
И тут у меня проснулась совесть: я себе и не себе обещал, что к/после 1к звездочек возобновлю репо, пофикшу оформление и добавлю еще заметок.
Так вот, этот момент настал. Вечер вторника сидел что-то дописывал и переписывал. Все еще in progress, но если есть замечания, идеи и вопросы - с радостью вас послушаю и вмержу.
Звездочка, ретвит, репост оч порадуют :)
https://github.com/cristaloleg/go-advice #go
И тут у меня проснулась совесть: я себе и не себе обещал, что к/после 1к звездочек возобновлю репо, пофикшу оформление и добавлю еще заметок.
Так вот, этот момент настал. Вечер вторника сидел что-то дописывал и переписывал. Все еще in progress, но если есть замечания, идеи и вопросы - с радостью вас послушаю и вмержу.
Звездочка, ретвит, репост оч порадуют :)
https://github.com/cristaloleg/go-advice #go
GitHub
GitHub - cristaloleg/go-advice: List of advice and tricks for Go ʕ◔ϖ◔ʔ
List of advice and tricks for Go ʕ ◔ϖ ◔ʔ. Contribute to cristaloleg/go-advice development by creating an account on GitHub.
Forwarded from rxd_txd (fl64)
Hotexamples
Примеры кода на Golang - HotExamples
Этот сервис был создан, чтобы помочь программистам в поиске реальных примеров использования классов и методов, а также получении документации к ним. Наша система автоматически ищет, извлекает а также ранжирует примеры использования исходного кода из более…
Такое предчувствие, что все сидят читают release notes #go 1.15 (сужу по чатам и лс)
https://tip.golang.org/doc/go1.15
- vet ругается на
- неправильный каст интерфейсов
-
- линкер хорош: 20% faster, 30% less memory
- плагины под osx !
- обрадую вас:
- да и всякое по мелочи
Хороший релиз будет.
https://tip.golang.org/doc/go1.15
- vet ругается на
string(x)- неправильный каст интерфейсов
-
-spectre если вы параноик- линкер хорош: 20% faster, 30% less memory
- плагины под osx !
- обрадую вас:
sync.Map.LoadAndDelete - да и всякое по мелочи
Хороший релиз будет.
tip.golang.org
Go 1.15 Release Notes - The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Мне надо в кое-чём признаться, я забыл, что в #go есть пакет
Там разные io.Reader/Writer которые возвращают ошибки. Но самого главного не было! Самого простого ErrReader, который сразу отдаёт ошибку (давайте честно, это пожалуй самое очевидное, что можно использовать).
Его вот и добавили https://github.com/golang/go/issues/38781 Правда сюдя по всему увидим мы его в 1.16, аж в феврале 2021 :(
testing/iotest (https://pkg.go.dev/testing/iotest?tab=doc)Там разные io.Reader/Writer которые возвращают ошибки. Но самого главного не было! Самого простого ErrReader, который сразу отдаёт ошибку (давайте честно, это пожалуй самое очевидное, что можно использовать).
Его вот и добавили https://github.com/golang/go/issues/38781 Правда сюдя по всему увидим мы его в 1.16, аж в феврале 2021 :(
pkg.go.dev
iotest package · pkg.go.dev
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
#go Type Parameters - Draft Design
June 16, 2020
This version of the design draft has many similarities to the one presented on July 31, 2019, but contracts have been removed and replaced by interface types.
https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md
Даже новость https://blog.golang.org/generics-next-step
Даже поиграться можно https://go2goplay.golang.org/
June 16, 2020
This version of the design draft has many similarities to the one presented on July 31, 2019, but contracts have been removed and replaced by interface types.
https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md
Даже новость https://blog.golang.org/generics-next-step
Даже поиграться можно https://go2goplay.golang.org/
go.dev
The Next Step for Generics - The Go Programming Language
An updated generics design draft, and a translation tool for experimentation
В #go 1.14 некрасиво сломали
https://github.com/golang/go/issues/39607
Забавно, что оно так долго провисело необнаруженным. Очевидно стоит радоваться, ведь мало людей пишут с рефлексией. Либо никто не пишет тесты, в которых есть такие проверки. 🤔
reflect.DeepEqual. Уже есть фикс, возможно даже в 1.14 бекпортнут, в 1.15 понятное дело зайдет.https://github.com/golang/go/issues/39607
Забавно, что оно так долго провисело необнаруженным. Очевидно стоит радоваться, ведь мало людей пишут с рефлексией. Либо никто не пишет тесты, в которых есть такие проверки. 🤔
GitHub
reflect: DeepEqual can return true for values that are not equal · Issue #39607 · golang/go
What version of Go are you using (go version)? $ go version go version go1.14.4 linux/amd64 Does this issue reproduce with the latest release? Yes, go1.14.4. It does not happen with go1.13.12. What...
Маленькая ода для
А именно. Часто можно встретить какую-то операцию, которую нужно и можно сделать 1 раз. Это может быть и закрытие соединения в каком-то клиенте и часто инициализация каких-то вещей.
Так как многим хочется эти вещи еще и в разных горутинах дергать, приходится добавлять какие-то синхронизации. Конечно же проще всего бахнуть
Это буквально 3 инта (мютекс 2 32битных содержит https://github.com/golang/go/blob/go1.14.4/src/sync/once.go#L18 опустим вопрос кешлиний и прочих веселостей) и на этом вся логика заканчивается. Самое главное, как по мне, что это заметно лучше читается:
- ты видишь
- ты знаешь, что по другому его не использовать
Эт круто.
Сюда же добавлю
sync.Once в #goА именно. Часто можно встретить какую-то операцию, которую нужно и можно сделать 1 раз. Это может быть и закрытие соединения в каком-то клиенте и часто инициализация каких-то вещей.
Так как многим хочется эти вещи еще и в разных горутинах дергать, приходится добавлять какие-то синхронизации. Конечно же проще всего бахнуть
Mutex и забыть о проблемах, некоторые чуть изощряются и делают на каналах, на атомиках тоже, но ведь уже есть простое решение - sync.Once !Это буквально 3 инта (мютекс 2 32битных содержит https://github.com/golang/go/blob/go1.14.4/src/sync/once.go#L18 опустим вопрос кешлиний и прочих веселостей) и на этом вся логика заканчивается. Самое главное, как по мне, что это заметно лучше читается:
- ты видишь
sync.Once
- ты знаешь, что он выполнится 1 раз- ты знаешь, что по другому его не использовать
Эт круто.
Сюда же добавлю
select {} который просто заблочит горутину (часто испоользую в main), поэтому другие решения (через бесконечный цикл, чтение из неиспользуемого канала) по сути не нужны.GitHub
go/once.go at go1.14.4 · golang/go
The Go programming language. Contribute to golang/go development by creating an account on GitHub.
Daniel Marti который завёз много хороших вещей в #go и особенно в encoding/json начал собирать идеи, что можно было бы исправить в v2 этого пакета.
Пока просто набрасывание идей, без каких либо планов, что это будет сделано. Но в любом случае, в ближайшие годы будут исправления и потенциально новое апи, пора, так сказать.
https://docs.google.com/document/d/1WQGoM44HLinH4NGBEv5drGlw5_RNW-GP7DdGEpm7Y3o/edit#
Пока просто набрасывание идей, без каких либо планов, что это будет сделано. Но в любом случае, в ближайшие годы будут исправления и потенциально новое апи, пора, так сказать.
https://docs.google.com/document/d/1WQGoM44HLinH4NGBEv5drGlw5_RNW-GP7DdGEpm7Y3o/edit#
Google Docs
encoding/json v2 draft
encoding/json v2 draft Please note that these are mostly my personal opinions as one of the maintainers of encoding/json. In no way are they a formal proposal (yet) or endorsed by the Go project. Written by Daniel Martí, with thanks to Philip Pearl, Matt…
Keeping Your Modules Compatible #go
https://blog.golang.org/module-compatibility
А вообще весь пятитомник можно перечитать
https://blog.golang.org/module-compatibility
А вообще весь пятитомник можно перечитать
go.dev
Keeping Your Modules Compatible - The Go Programming Language
How to keep your modules compatible with prior minor/patch versions.
Пришло время переустанавливать шиндоус обновлять бейджики в #go репах https://pkg.go.dev/badge
https://github.com/golang/go/issues/36982#issuecomment-658395417
Спасибо @jemalloc (смотрел бы чаще почту - не говорил бы спасибо, спасибо hey)
https://github.com/golang/go/issues/36982#issuecomment-658395417
Спасибо @jemalloc (смотрел бы чаще почту - не говорил бы спасибо, спасибо hey)
#go multiple keys in struct tags (probably) will be added in 1.16 ! Yey! https://github.com/golang/go/issues/40281#issuecomment-673005279
GitHub
reflect: back out multiple keys in key:value pair in struct tag · Issue #40281 · golang/go
Hello 👋 I'm actually boring to set the same value for multiple key in my struct tag. Maybe I missed something but here is the boring thing: type MyStruct struct { Field1 string `json:"fiel...
Не побоюсь вас поздравить, в #go 1.16 (очевидно) завезут получения адреса где паника случилась.
https://github.com/golang/go/issues/37023#event-3783557481
type addrable interface {
Addr() uintptr
}
e := recover()
if a, ok := e.(addrable), ok {
_ = a.Addr()
}https://github.com/golang/go/issues/37023#event-3783557481
GitHub
runtime: panicmem should expose the address it's panicking about. · Issue #37023 · golang/go
What version of Go are you using (go version)? 1.13 Does this issue reproduce with the latest release? probably What operating system and processor architecture are you using (go env)? AMD64 What d...
oleg_log
За два дня убил около часа на дебаг тестов с -race. Уже холодный пот прошел, думал ну все, не понимаю как работают горутины, пора в Rust и Scala валить, чтобы за меня все решали. Все оказалось проще, тесты не запускались с -race, спасибо самопальным ямлам.…
По поводу #go race detector, решил погуглить всякие статейки. Нашел одну, которую не узнал, может и не видел. Конечно же ничего нового, но такое ощущения, что больше теории рассказано, чем обычно. Вдруг заинтересует.
https://krakensystems.co/blog/2019/golang-race-detection
https://krakensystems.co/blog/2019/golang-race-detection
Kraken Systems Ltd.
Golang race detection | Kraken Systems Ltd.
Data races are nasty kinds of bugs; rare, hard to replicate and tend to occur at the worst possible moment. Have you ever wonder how go does it under the hood?
Есть шанс, что в #go 1.16 завезут Fiat-crypto.
TLDR: formally-verified, high-performance modular arithmetic implementations, useful for crypto primitives like Curve25519, Poly1305, and the NIST ECC curves that are used within the Go standard library.
(Fiat & crypto гуглить неприятно, спасибо криптоскамувалюте)
https://github.com/golang/go/issues/40171
Наверное это мало кому интересно, но вещь правда хорошая, пруфнутая на корректность, да еще и шустрая. Криптография в Go станет еще чуточку лучше и доступнее.
Еще забавно, как они в ишью лицензию обсуждали. Не знаю, забавно смотрелось.
TLDR: formally-verified, high-performance modular arithmetic implementations, useful for crypto primitives like Curve25519, Poly1305, and the NIST ECC curves that are used within the Go standard library.
(Fiat & crypto гуглить неприятно, спасибо крипто
https://github.com/golang/go/issues/40171
Наверное это мало кому интересно, но вещь правда хорошая, пруфнутая на корректность, да еще и шустрая. Криптография в Go станет еще чуточку лучше и доступнее.
Еще забавно, как они в ишью лицензию обсуждали. Не знаю, забавно смотрелось.
GitHub
crypto: import fiat-crypto implementations · Issue #40171 · golang/go
The fiat-crypto project (https://github.com/mit-plv/fiat-crypto) generates formally-verified, high-performance modular arithmetic implementations, useful for crypto primitives like Curve25519, Poly...
Forwarded from Tech Cheat Sheet (Oleg Kovalov)
Encore Cloud
Go Modules Cheat Sheet
A handy reference for common operations with Go modules.