SaaSHub helps you find the best software and product alternatives Learn more →
Top 23 Go Miscellaneou Projects
-
There’s no Go book that I personally would recommend without hesitation.
Instead, I would suggest that you try to find a bunch of blog posts and lectures and read/watch them in order to get a feeling of the Go philosophy. The official Go blog has some good articles and otherwise I recommend to have a look at what Rob Pike and Russ Cox has written/presented.
Then I believe that as soon as possible it’s a good idea to start some toy project so that you can dive in.
I’m afraid I don’t have too many links to share. This might be a good starting point: https://www.youtube.com/watch?v=7VcArS4Wpqk
Here’s a meta-resource that could be useful: https://github.com/avelino/awesome-go (see the Resources section at the end of the ToC).
Best of luck!
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
Here is, in my opinion, a much better approach to the problem: https://github.com/google/wire
-
-
-
-
Project mention: I write HTTP services in Go after 13 years (Mat Ryer, 2024) | news.ycombinator.com | 2024-02-09
I found fx(https://github.com/uber-go/fx) to be a super simple yet versatile tool to design my application around.
All the advice in the article is still helpful, but it takes the "how do I make sure X is initialized when Y needs it" part completely out of the equation and reduces it from an N*M problem to an N problem, ie I only have to worry about how to initialize individual pieces, not about how to synchronize initialization between them.
I've used quite a few dependency injection libraries in various languages over the years (and implemented a couple myself) and the simplicity and versatility of fx makes it my favorite so far.
-
package main import ( "bufio" "encoding/binary" "encoding/hex" "fmt" "os" "strings" "time" ) func main() { scanner := bufio.NewScanner(os.Stdin) scanner.Split(bufio.ScanLines) for scanner.Scan() { id, _ := FromString(scanner.Text()) fmt.Println(id.Time()) } } func (me UUID) Nanoseconds() int64 { time_low := int64(binary.BigEndian.Uint32(me[0:4])) time_mid := int64(binary.BigEndian.Uint16(me[4:6])) time_hi := int64((binary.BigEndian.Uint16(me[6:8]) & 0x0fff)) return int64((((time_low) + (time_mid << 32) + (time_hi << 48)) - epochStart) * 100) } func (me UUID) Time() time.Time { nsec := me.Nanoseconds() return time.Unix(nsec/1e9, nsec%1e9).UTC() } // code below Copyright (C) 2013 by Maxim Bublis // see https://github.com/satori/go.uuid // Difference in 100-nanosecond intervals between // UUID epoch (October 15, 1582) and Unix epoch (January 1, 1970). const epochStart = 122192928000000000 // UUID representation compliant with specification // described in RFC 4122. type UUID [16]byte // FromString returns UUID parsed from string input. // Following formats are supported: // "6ba7b810-9dad-11d1-80b4-00c04fd430c8", // "{6ba7b810-9dad-11d1-80b4-00c04fd430c8}", // "urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8" func FromString(input string) (u UUID, err error) { s := strings.Replace(input, "-", "", -1) if len(s) == 41 && s[:9] == "urn:uuid:" { s = s[9:] } else if len(s) == 34 && s[0] == '{' && s[33] == '}' { s = s[1:33] } if len(s) != 32 { err = fmt.Errorf("uuid: invalid UUID string: %s", input) return } b := []byte(s) _, err = hex.Decode(u[:], b) return } // Returns canonical string representation of UUID: // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. func (u UUID) String() string { return fmt.Sprintf("%x-%x-%x-%x-%x", u[:4], u[4:6], u[6:8], u[8:10], u[10:]) }
-
-
-
Project mention: Dependency Injection: A Straightforward Implementation in Golang | dev.to | 2024-05-10
Before we move into the implementation, we should know why we use this kind of thing? what is the purpose of implement dependency injection? So dependency injection helps to decouples components in a system by removing direct dependencies between them. making them more modular and easier to understand, maintainable, and testable. In simple explanation you do not have to do initialization of an instance everytime you need it, just take it from dependency injection, so your coding process will be straightforward. In this moment we will use Uber Dig to achive that.
-
-
-
-
-
Project mention: Pagoda: Rapid, easy full-stack web development starter kit in Go | news.ycombinator.com | 2024-09-29
-
-
-
Project mention: Do: A dependency injection toolkit based on Go 1.18 Generics | news.ycombinator.com | 2024-07-24
-
-
ghorg
Quickly clone an entire org/users repositories into one directory - Supports GitHub, GitLab, Bitbucket, and more 🐇🥚
-
-
go-restful-api
An idiomatic Go REST API starter kit (boilerplate) following the SOLID principles and Clean Architecture
-
Go Miscellaneous discussion
Go Miscellaneous related posts
-
Shoutrrr – Notifications Library for Gophers
-
Pagoda: Rapid, easy full-stack web development starter kit in Go
-
Ask HN: What is the best way to learn Go?
-
Golang – when programmers had smaller egos
-
Top Backend Libraries
-
WatchYourLAN: Lightweight Network IP Scanner
-
The 4-chan Go programmer
-
A note from our sponsor - SaaSHub
www.saashub.com | 11 Oct 2024
Index
What are some of the best open-source Miscellaneou projects in Go? This list will help you:
Project | Stars | |
---|---|---|
1 | go-formatter | 130,233 |
2 | wire | 12,952 |
3 | gopsutil | 10,539 |
4 | gatus | 6,164 |
5 | afero | 5,932 |
6 | fx | 5,725 |
7 | go.uuid | 4,862 |
8 | gofakeit | 4,520 |
9 | archiver | 4,350 |
10 | dig | 3,889 |
11 | service | 3,563 |
12 | jabba | 2,992 |
13 | go-multierror | 2,324 |
14 | go-resiliency | 2,197 |
15 | pagoda | 2,134 |
16 | base64Captcha | 2,111 |
17 | nunu | 1,890 |
18 | do | 1,836 |
19 | modern-go-application | 1,828 |
20 | ghorg | 1,551 |
21 | gosms | 1,449 |
22 | go-restful-api | 1,412 |
23 | xstrings | 1,395 |