Our great sponsors
|8 days ago||6 days ago|
|GNU General Public License v3.0 only||BSD 3-clause "New" or "Revised" License|
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
How to start a Go project in 2023
21 projects | news.ycombinator.com | 23 May 2023
Things I can't live without in a new Go project in no particular order:
- https://github.com/golangci/golangci-lint - meta-linter
- https://goreleaser.com - automate release workflows
- https://magefile.org - build tool that can version your tools
- https://github.com/ory/dockertest/v3 - run containers for e2e testing
- https://github.com/ecordell/optgen - generate functional options
- https://golang.org/x/tools/cmd/stringer - generate String()
- https://mvdan.cc/gofumpt - stricter gofmt
- https://github.com/stretchr/testify - test assertion library
- https://github.com/rs/zerolog - logging
- https://github.com/spf13/cobra - CLI framework
FWIW, I just lifted all the tools we use for https://github.com/authzed/spicedb
We've also written some custom linters that might be useful for other folks: https://github.com/authzed/spicedb/tree/main/tools/analyzers
Just migrated our Open Source project to Golang
4 projects | news.ycombinator.com | 21 Mar 2023
How to integrate golangci-lint into a project?
2 projects | /r/golang | 13 Feb 2023
Hey, I try to figure out an elegant way to integrate golangci into a Go project.
A fast HashSet implementation
3 projects | /r/golang | 13 Feb 2023
All of this is nitpicking really, but I would suggest using linters, e.g. https://github.com/golangci/golangci-lint - sometimes annoying, but mostly just helps to avoid discussions like this (and plethora of bugs).
Go 1.20 released
3 projects | /r/golang | 1 Feb 2023
Luciano Remes | Golang is 𝘼𝙡𝙢𝙤𝙨𝙩 Perfect
7 projects | /r/golang | 2 Jan 2023
You should always use golangci-lint, which includes errcheck.
Go API Project Set-Up
7 projects | dev.to | 23 Dec 2022
golangci lint - https://golangci-lint.run/
a tool for quickly creating web and microservice code
28 projects | dev.to | 15 Dec 2022
Code inspection golangci-lint
Introduccion a Golangci Lint
2 projects | dev.to | 26 Nov 2022
Thirteen Years of Go - The Go Programming Language
5 projects | /r/programming | 10 Nov 2022
I disagree with at least half of your post, tooling in Go is amazing overall and there is one linter that pretty much every one is using: https://github.com/golangci/golangci-lint
Learn x86-64 assembly by writing a GUI from scratch
11 projects | news.ycombinator.com | 1 Jun 2023
Example of assembly in Go source code:
Why no src directory?
3 projects | /r/golang | 31 May 2023
This mother of all things has a dedicated src directory, so it really comes down to each project to choose its own file structure.
Exploring Async PHP
6 projects | dev.to | 31 May 2023
There are many solutions available without requiring PHP 8.1 that have been battle tested, but it's interesting to see the direction the PHP language is going in to compete with the likes of Golang and Elixir, both of which support async programming and have done for years.
Some annoying moments in Golang
I dislike how the implicit reference-like behavior of slices, maps, channels, and function pointers confuses newcomers to the language. It would be less ergonomic to have to declare them as pointer types, but it would be more clear to readers. The language used to actually do this in its pre-1.0 infancy (example). Everything is passed by value, but the values are pointer themselves to the actual data structures.
Will change in Go 1.21
In depth, complex technical implementation videos?
This isn't videos, but I would recommend tearing apart the implementation of the standard library and runtime for the language. They are accessible but present an interesting study in expert implementation.
Show HN: MicroSCOPE
2 projects | news.ycombinator.com | 27 May 2023
MicroSCOPE is a software program developed through the [Go](https://go.dev) programming language that allows for the inidetection of a precise category of malicious software. The program is designed specifically for a class of malicious programs called _ransomware_ whose operation consists of data encryption and ransom demand in order to gain access to the content again.
In particular, MicroSCOPE was developed to be able to support two of the mainly used formats: the PE (_Portable Executable_) format for Windows platforms and ELF (_Executable and Linking Format_) for Unix-based platforms. Through the application of certain heuristics, MicroSCOPE is able to assign a score that corresponds to the level of dangerousness of the file being analyzed. The higher the score, the more similar characteristics the software will exhibit to ransomware that has already been studied. The heuristics have been extrapolated from numerous case studies and will be improved over time.
GoLang — Simplifying Complexity “The Beginning”
9 projects | dev.to | 27 May 2023
If you want to delve further into concurrency, you can check out this link. If you want to test and see some examples, you can click here. We'll create a separate post to talk about Goroutines, which is a very detailed and interesting topic. We know that Go's support for concurrency makes it a godsend for problems that are best solved using concurrency.
Longevity of Go
4 projects | /r/golang | 26 May 2023
I believe that if Google dies, Go doesn't die with it, as per the license.4 projects | /r/golang | 26 May 2023
What are some alternatives?
v - Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
TinyGo - Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
Nim - Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
ireturn - Accept Interfaces, Return Concrete Types
Angular - The modern web developer’s platform
golang-developer-roadmap - Roadmap to becoming a Go developer in 2020
gosec - Golang security checker
golangci-lint-action - Official GitHub action for golangci-lint from its authors
RxGo - Reactive Extensions for the Go language.
crystal - The Crystal Programming Language
gopl.io - Example programs from "The Go Programming Language"