IMHO, Python is more work to develop in than Go. Haven't worked in PHP or Ruby in over a decade, but I suspect they're just as bad. Go requires a bit more typing, but the result is more likely to be correct and when it's not correct it's easier to figure out why than in Python. In my experience, typing isn't the thing that slows me down, it's when something goes wrong and the language doesn't have the ability to help me quickly resolve the problem. Go is just way better at this than the "higher" level languages. Answer from william_moran on reddit.com
🌐
Reddit
reddit.com › r/golang › how is your productivity with go compared with other more higher level languages?
r/golang on Reddit: How is your productivity with Go compared with other more higher level languages?
April 11, 2024 -

I came to Go from Ruby but I've been writing mainly Go for quite some time now and I forgot how it was to work on a Ruby project. For those doing this daily, with PHP, Python, Ruby, JS, ..., do you feel that there is a huge productivity gap between those languages and Go when dealing with web applications? (server side rendering)

🌐
Reddit
reddit.com › r/golang › cognitive load of go vs other languages
r/golang on Reddit: Cognitive load of GO vs other languages
August 7, 2023 -

So I wrote an app a few weeks ago that had a frontend written in Alpine JS and PHP on the BE. I used PHP because I wanted something easy to deploy (typically use Ruby for web dev). I decided to port it to GO for fun because I did a bit of go before.

It took 3x as many lines as PHP! 3x as many. Crazy. That's partly because you can't have 1 line if statements with my linter and because of all the error handling.

BUT, what I noticed is that even though it's much more verbose the cognitive load with GO is SO MUCH LOWER.

I love to code and have been doing it for 25+years but I realize that sometimes when I have hard features to code I sort treat it like a mission I have to go on. I know it's going to be stressful and unpleasant.

With GO however it all seems pretty easy. For one the fact that it's staticly typed is a lifesaver. I'm used to that with C++ and Java though, but the way Fiber handles taking your POST JSON and sticking it into a struct is great. You don't have to wonder "wait, is this actually a string when I thought it was a number?" That really mitigates a lot of the stress of building webapps. That communication layer between FE and BE can be a pain.

I feel like my mental CPU clock just stays at 15% instead of averaging 50% and spiking up to 100 frequently (sort of like GO vs Node on a server). I just can't get past that. Even though the language itself is nothing special. It doesn't even have ternaries, but I can always look at the code and it's basically as simple as it gets.

Idk, writing go I just feel a big weight has been lifted off of my shoulders, I don't mind the stress of programming, I enjoy the fight but now I'm like "huh, I'm really productive and I'm not stressed at all..."

As I mentioned earlier I used PHP because it's easy to deploy. Well... GO is not QUITE as easy to deploy as PHP, you can't just stuff your files on a shared host BUT I've been deploying to a DO node by just FTPing in and dropping my self contained executable. That's really, really easy. Also, I use NGINX so I just make a nginx entry for it and there you go. Plus it takes so little ram that you can deploy like 10 go apps to one $5 vps.

Plus when you need to look at the code of a package you use it's pretty easy to understand what's going on in most cases.

I'm honestly surprised GO isn't more popular. Like it's not the cool kid. People are loving typescript (which is a nightmare to me personally) and want to use it everywhere but like to me it's not worth it.

And the best part, is that it gets amazing performance out of the box. I tried Rust which is an enigma wrapped in a mystery inside a riddle (thanks WC). It's so painful to get working with it, and GO isn't as good as Rust in terms of performance but it's close enough and it's about 20x easier as a language.

Anyway, just wanted to share that. I really like it.

Edit: Also recompiling is a pain but the fact that so many errors are caught before or during compile makes up for it. With dynamic languages it's like "Okay now it's reloaded... What did I break, lets see"

Top answer
1 of 5
97
Contra the assumptions of many Go detractors, I have in fact programmed in the supposed Promised Land. I have used many dynamic scripting languages, and I learned them very deeply. I have used Haskell to do non-trivial work. (Not huge work, but non-trivial, not just "I played with it a bit".) I too know how to use one-liners to take some dictionary and transform it into some other completely different dictionary while filtering out the empty items and some other fiddly detail. And what I noticed, years before Go was even at 1.0, is that my professional code kept getting simpler and simpler. My biggest shared code base was Perl, and while it may have a bad rep as line noise, it is another language that had a lot of the nice features I'm supposedly missing from Go. I noticed using the clever stuff (not always mine) was where bugs arose. My fellow programmers wouldn't understand it until I blew it back out into simple code, with intermediate variable names, and places to comment on things, and then it would stop being a problematic part of the code. Perl had all sorts of support for all sorts of things and on the net I was removing them. I would do one thing on one line even if it was easy to do more. Where I ultimately ended up is that my other code converged at roughly Go's level of verbosity anyhow. So using Go turns out not to be that much of an impediment. Now, the error handling is a bit more verbose, yes, but I also find I'm often doing things in those handlers by the time code gets to production. Just blindly returning errors is not something you should do; you should definitely think about the situation first. And a lot of times Go has a quite nice solution to some problem. It isn't that I don't understand how to use all the line-saving techniques. I understand them very well. It is that I also understand that those have costs. In particular, the main problem with clever code is that your code is being read by not particularly smart developers. I don't just mean that in an inegalitarian way (though I do not subscribe to the idea that everyone is equally talented in every way), but there is also the much bigger problem that even if a developer is reading your code that can figure out what it is doing if they puzzle over every line, the most common case that your code will be read, it is being read by a developer who doesn't want to apply that much brain power. They are not here to read your code and get a thrill about how amazingly concise it is. They are here to solve a problem. They are not studying your code, they are skimming it to try to find their problem. Your code should be skimmable, and that means that you don't write in a style where every character has Phenomenal Cosmic Meaning. You write code in a highly idiomatic manner, that does nothing surprising, and does not have little clever bombs in it all the time. All that said, there are things that are missing from Go that I would like from that world. It is again not that I don't understand the virtue of sum types and the other techniques. It's just that considered wholistically, even in those cases where I would see them as net positive, I see them as less net positive than many do, because I've seen what happens when I throw a huge chunk of very complicated code at the average developer, versus much simpler code. I can do some nice things with sum types; I've seen developers seriously screw them and those other nice features up, though, and when they do, my oh my is that the worst mess you've seen. In a nutshell, I'd rather apply my cleverness to finding simple solutions that can be understood by other developers, even ones not applying their full brain power, than wielding complicated tools to create complicated solutions full of surprising corner cases. (Go has corner cases, of course, but they generally aren't surprising, which still makes them better than surprising corner cases.) All in all, as a professional programming language I find it makes very good tradeoffs. It isn't perfect for everything and there are tasks I wouldn't blink at dropping Go and reaching for Rust or something, where the additional load on developers is actually a net savings in the long term. But it is much better than the people who just want to show off how clever they are realize.
2 of 5
14
Yup. You can totally tell that readability and maintainability were two of the major design objectives.
🌐
Reddit
reddit.com › r/golang › go performs 10x faster than python
r/golang on Reddit: Go Performs 10x Faster Than Python
February 13, 2024 -

Doing some digging around the Debian Computer Language Benchmark Game I came across some interesting findings. After grabbing the data off the page and cleaning it up with awk and sed, I averaged out the CPU seconds ('secs') across all tests including physics and astronomy simulations (N-body), various matrix algorithms, binary trees, regex, and more. These may be fallible and you can see my process here

Here are the results of a few of my scripts which are the average CPU seconds of all tests. Go performs 10x faster than Python and is head to head with Java.

Python Average: 106.756
Go Average: 8.98625

Java Average: 9.0565
Go Average: 8.98625

Rust Average: 3.06823
Go Average: 8.98625

C# Average: 3.74485
Java Average: 9.0565

C# Average: 3.74485
Go Average: 8.98625
🌐
Reddit
reddit.com › r/golang › go is faster than other fast programming language on text search in file?
r/golang on Reddit: GO is faster than other fast programming language on text search in file?
August 29, 2024 -

For a personal project I wanted to know what is the best language for searching a keyword in a text file.

I did some research and I found out that the best languages ATM for efficiency and speed are:

  1. rust

  2. c++

  3. go

I tried to create a scenario with a file (filled with lorem ipsum) of 54MB and performing the search with the languages listed above. I was flabbergasted when the results came out.

The most difficult scenario (i leave the boxplot below) happens when the haystack that I need to find is in the end of the file (cause the programm will need to cycle to the end to find a result).

The scenario's result (based on 100 tries for each language on the most difficult file) is that go is very fast, at least 4 times faster! Im still learning so I'm not aware of the possible shenanigans that go uses to handle files.

If someone can explain if the behaviour is correct or have any feedback I will leave the code in the end of the post

https://github.com/learning-bos/file-search-comparison.git

Top answer
1 of 5
45
There are some issues with your benchmark: You are not measuring the elapsed time correctly in Rust: start.elapsed().subsec_nanos(); This always returns the fractional part of a second. If the measurement takes more than 1s, you will get a wrong result. 2. You are converting both the line & the search word to lowercase on each iteration. You are not doing that in Go. This has 2 implications: Strings in rust are strictly UTF8, so to_lowercase() has to do some unicode gymnastics (that's why Rust has 2 versions of that method: to_lowercase and to_ascii_lowercase if we are sure that we are not dealing with unicode symbols) In rust to_lowercase() is always allocating a new string, thus you have 2x times unnecessary allocations. There is make_ascii_lowercase that modifies the string in place, but is still not needed here, becasue the Go app does not do that After I've fixed those issues, rust version become 4 times faster than the Go one on my machine: Rust: 53.0590,27.2250,0.7080 53.3550,26.5340,0.7020 53.1930,27.1070,0.7140 54.3300,26.5720,0.7060 53.9280,26.9780,0.7030 Go: 208.0063,95.8225,2.8097 214.5191,112.5149,2.4609 188.1981,83.5011,2.0675 177.8512,83.5049,2.0324 185.1850,88.1454,2.4182 You can see that the Rust version is not only 4x faster, but the times are much more consistent. This is due to the lack of GC we control when to allocate (and thus we can avoid it) go strings are immutable, so the go app cannot reuse the buffer and is always forced to reallocate. Ouch Here is the fixed code: use std::fs::File; use std::io::{self, BufRead, BufReader, BufWriter, Write}; use std::path::Path; use std::time::Instant; fn main() -> io::Result<()> { let search_word = "pianissimo"; let file_locations = [ "text/big-end.txt", "text/big-middle.txt", "text/big-start.txt", ]; let file = File::create("rust-results.csv")?; let mut file = BufWriter::new(file); writeln!(file, "end,middle,start")?; for _ in 0..100 { for (idx, &location) in file_locations.iter().enumerate() { let duration = search_word_in_file(location, search_word); if idx > 0 { write!(file, ",")?; } write!(file, "{:.4}", duration)?; } writeln!(file)?; } Ok(()) } fn search_word_in_file(file_path: &str, search_word: &str) -> f64 { let path = Path::new(file_path); let start = Instant::now(); let file = File::open(&path).unwrap(); let reader = BufReader::new(file); for line in reader.lines() { if let Ok(line) = line { if line.contains(&search_word) { break; } } } start.elapsed().as_micros() as f64 / 1000.0 } PS: We can make the rust code even faster. The .lines() iterator allocates a new string per line internally. We can do better - we can avoid that allocation very easily: fn search_word_in_file(file_path: &str, search_word: &str) -> f64 { let path = Path::new(file_path); let start = Instant::now(); let file = File::open(&path).unwrap(); let mut reader = BufReader::new(file); let mut buffer = String::new(); loop { let n = reader.read_line(&mut buffer).unwrap(); if n == 0 || buffer.contains(&search_word) { break; } buffer.clear(); } start.elapsed().as_micros() as f64 / 1000.0 } Now the Rust times are 42.2030,21.0930,0.5610 43.1250,21.0560,0.5590 42.2610,21.1830,0.5640 42.2660,21.1010,0.5610 42.1410,21.2030,0.5580
2 of 5
16
Go is using a different algorithm. You might think that the way to search for a substring is simply to find an instance of the first letter, see if it's followed by the second, etc. And indeed that's a reasonable approach for small inputs, and how most language implementations do it. In the Go standard library, they bothered to implement the Rabin-Karp algorithm to speed up searching larger inputs using a rolling hash.
🌐
Reddit
reddit.com › r/golang › any idea why go is not massively overperforming java in this benchmark ?
r/golang on Reddit: Any idea why go is not Massively overperforming java in this benchmark ?
April 28, 2025 -

In this benchmarking test, Anton the youtuber is testing REST API built using Java (Quarkus) and Go (Fiber). I always thought that Go Massively outperforms other compiled and GC languages like java and C#. But according to this test, go barely outperforms java api. This test uses Fiber which uses fast http which is faster than the standard lib net/http. The benchmark uses two tests: 1). A simple get api which returns a UUID as json 2). An api which fetches a file from local computer, saves it to amazon S3 and then saves metadata to Postgres. The 2nd test is closer to real world use case. I am studying go and could use your comments to know what could Anton do to further optimize his go app. I know a performance gain of a few seconds doesn't matter. I am just curious.

🌐
Reddit
reddit.com › r/golang › is golang really a competitor to c++ ?
r/golang on Reddit: Is Golang really a competitor to C++ ?
March 21, 2024 -

So I have recently watched an interview where Ken Thompson was saying he got convinced to build Go after he read some C++ codebase. I also read some blogs saying the same.

But how can Go compete with C++ which has manual memory management ?

The reason people are using C++ is because of its Speed and ability to manually manage the memory right ?

How can Go which has GC be used to write Game development, HFT softwares, automobile softwares, embedded and expect the same result as that of a manually memory managed language?

Or is there any plan to add manual memory management to Go ? Which would make it really awesome ig ?

Here is the Google I/O conference

Ps: Beginner.

Edit: By competitor I meant the same things C++ does that go does it easier and better.

I think many people thought I was trying to make a language war here lol.

As i specifically mention above I'm a beginner and I was just trying to get the thoughts of experienced devs who used both.

Find elsewhere
🌐
TFTUS Official Blog
tftus.com › blog › golang-vs-other-languages-a-comparative-analysis
Golang vs. Other Languages: A Comparative Analysis
December 16, 2025 - Golang, on the other hand, is designed to be fast and efficient. Golang’s compiled nature and concurrency features make it a faster choice than Python for many applications. Java is another popular language for building enterprise applications.
🌐
Orient Software
orientsoftware.com › blog › golang-performance
Golang Performance: Go Programming Language vs. Other Languages
July 4, 2023 - The biggest advantage of Go when compared to other languages is its built-in support for concurrency through channels and goroutines. Golang is considered an optimal choice for building cloud-native applications and high-performance microservices.
🌐
Quora
quora.com › How-fast-is-Golang-compared-to-other-programming-languages
How fast is Golang compared to other programming languages? - Quora
... Go is a compiled, statically ... runtime, delivering performance often between C/C++/Rust and high-level managed languages (Java, C#), but closer to lower-level languages for many real-world server workloads....
🌐
Reddit
reddit.com › r/golang › why is golang not as performant as c or c++?
r/golang on Reddit: Why is Golang not as performant as C or C++?
January 12, 2019 -

Hi all,

First of all, forgive me to ask this. I am a noob to Golang and find it very promising to learn. I read that Golang is not as performant as C or C++ code. What's the reason behind this? AFAIK Golang is very close to C or inherits many features. If this is the case, why is Golang gaining popularity? How about the future of Golang developers? What's the primary domain of use - cloud?

Top answer
1 of 14
248

Some people like to blame all of the slowness of languages like Go, C#, and Java on garbage collection, but that isn't a very complete story. People will correctly tell you that normally garbage collection takes up a very very small % of total runtime, and that is true, so what else is going on? There are some indirect and related things as well.

  • Languages that have garbage collection are attempting to be memory safe languages, so:

    • They will also tend to have array bounds checks when the compiler can't prove they can be elided

    • They will tend not to allow as many clever casts

    • They will tend not to allow pointer arithmetic

    • Providing ways to leverage SIMD instructions by hand is hard (Go gives access only through Go assembler at the moment)

    • They will tend not to have a way for the compiler to do floating point optimizations that can change results like --ffast-math in C compilers

  • Garbage Collection has some indirect effects aside from how much time is spent doing GC

    • Every time the GC runs it pollutes the CPU caches, slowing down code that runs later

    • GC will normally imply a degree of overhead when doing FFI (interop with other languages). Go has even more overhead due to how it manages it's stack, which facilitates goroutine features. Lots of things require FFI still (3d rendering, for example) so those things will always be slower.

    • The control you get over memory layout of your data is usually limited to some degree. For instance in Go you can't explicitly control whether data goes on the stack, or heap, or *where* to goes on the heap. On the bright side in Go you can at least work with any type you create as a value or a reference, so you can at least control things like making sure your array is an array of values in contiguous memory vs an array of references, which you can't in Java. Accessing RAM is very slow, controlling memory layout on modern computers can be a big deal, assuring that you hit the L1 and L2 cache as much as possible.

There are also just some cultural things, people working on the C and C++ ecosystems are doing so because performance is priority one. People working on ecosystems of memory safe languages obviously have a bit of priority for safety, correctness, or productivity or they wouldn't want the GC!

None of these things in isolation is normally a very big deal but they can add up.

2 of 14
44

There are tons of differences in the implementations of C and Go that slightly slow down Go in favour of safety. A few things:

  • goroutine scheduling

  • growing stacks

  • Runtime checks for memory access (you panic on nil not segfault)

  • runtime reflection

  • Bounds checking on arrays/slices

  • No naive casting (safe type assertion)

  • Different calling conventions

    • this allows panics at any pint

    • Go relies more on the stack (no fastcall)

  • Defer

  • Much fewer optimizations in favour of fast compile times

  • latency optimized GC, this limits throughput

All of this and much more lead to the fact that cgo has quite some overhead.

C is still the most dominant language and this will be remain true longer than we all live. Go improves C in lots of aspects that address issues faced today.

  1. Go is memory safe making it way less dangerous to program critical systems

  2. Great multicore capabilities in times after Moore's law

  3. Go scales great

🌐
Reddit
reddit.com › r/golang › when is .net more performant than go?
When is .NET more performant than Go? : r/golang
October 20, 2024 - The generated code is super good, but it does not matter, when everything is an Object, which requires a lot of memory allocations and makes optimisation suepr hard · On the contrary .Net has a lot of performance-wise goodies like spans and structs. Golang is pretty mediocre.
🌐
Quora
quora.com › How-does-the-speed-of-Golang-compare-to-that-of-C-C-Python-and-Rust
How does the speed of Golang compare to that of C, C++, Python, and Rust? - Quora
For highly concurrent tasks, simple Go code may be much faster than simple code in other languages. Go has a great, highly efficient task scheduler that makes the most of both non-blocking I/O and OS threads.
🌐
Quora
quora.com › What-makes-the-performance-of-Go-better-than-other-languages-like-Java-and-C-despite-its-GC-overhead
What makes the performance of Go better than other languages like Java and C++ despite its GC overhead? - Quora
Answer: Constrains. Go is more similar to C than it is to C++ or Java, although it picks on some of their best ideas (strong typing, memory management). The only intended paradigm to write code in go is Procedural, which is much closer to how ...
🌐
Reddit
reddit.com › r/golang › why does go perform worse than nodejs in this test?
r/golang on Reddit: Why does Go perform worse than Nodejs in this test?
February 24, 2026 -

I found a comparison of nodejs and go performance on this site (https://www.techempower.com/benchmarks/#section=data-r23&test=update&l=zijo5b-pa5). I was interested in the fact that go loses to nodejs. Could there be something wrong there?

Top answer
1 of 12
183
A possible reason is the top Go implementation doesn’t pipeline/batch the select queries, only the updates. Whereas the NodeJS Postgres driver pipelines everything. Source: https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/Go/fasthttp/src/handlers/handlers.go Update: looks like this code was copy and pasted among all of the top go tests (fiber, fasthttp, goframe, atreugo, etc). I tried digging through the PRs to see why it was implemented this way but ran out of time. Maybe there was a good reason? I do think it’s a valid benchmark even though it’s “testing the framework not the language.” If node’s DB driver makes it easier to boost performance then that’s to its credit. If somebody wants a little fame and fortune, submit a PR to batch the selects and boost Go’s rankings! Update 2: I figured it out. Essentially, the NodeJS code is violating the requirements for the benchmark. The requirements explicitly ban the use of select batching : To be clear: bulk reads are not permissible for selecting/reading the rows, but bulk updates are acceptable for writing the updates. However the top Node implementations use select batching : for (let i = 0; i < queries; i++) { worldPromises[i] = db.find(generateRandomNumber()) } const worlds = await Promise.all(worldPromises); Although you may not see the words “batching” or “pipelining” and this is perfectly idiomatic node code and I’m sure the authors didn’t mean to do anything wrong… But queuing up query promises like this and doing Promise.all() on them all at once will trigger the Postgres driver to pipeline them. It’s a very good optimization and I’m glad idiomatic node encourages this! But at the same time it creates a fairness problem for the benchmark. If node is allowed to do this then the other frameworks should be allowed to do equivalent select batching. Update 3: looking into it even more, the benchmark rules may allow for a specific kind of “batching” that nodeJS does. Apparently there was a mega thread on this a few years ago. The node Postgres driver buffers all the queries that it gets within a node event loop and writes them to the socket together , leveraging Postgres’s extended protocol. So they are technically separate queries, but they get sent in a batch over the wire. Techempower ruled this legal . “If using PostgreSQL's extended query protocol, each query must be separated by a Sync message.” Network-level batching over the wire is acceptable (where the DB will process each query separately) but query-level coalescing is not. Where does that leave Go? Apparently v5 of the pgx driver has a pipeline API that can do this ( example usage ). It is not idiomatic Go however.
2 of 12
116
The V8 JS engine is very very well tuned for the async loop?
🌐
Reddit
reddit.com › r/golang › why i think go is worth it
r/golang on Reddit: Why I think Go is worth it
July 31, 2024 -

Hello, I've recently made the switch to Go. And all I can tell is that it's really amazing.

Some context

I come from python/Django and now I use a simple net/http and gorilla/mux. My API is now a 1000% faster lol, I dropped from 871ms for an authenticated query using Postgresql to only 32ms with MariaDB (using GORM) Update 1: after researching more, PostgresQL seems better to use :)

Why I think it's worth it

Python is inevitably nice to use for quick ideas, but go is there when you want the performance. Go, not like Python, is a compiled language. Which means it builds an optimized binary and then runs it. Python interpretes it and that's why it's so slow. Another thing is the syntax. I've been using Jetbrains GoLand and the power it gives is impressive. The syntax is easy to read (thanks to go fmt which lints the code in a very specific way) which means that Go code cannot be messy and difficult to read (in my opinion) I also like the fact that it uses "packages", which allows you to split functions in as much files as you like in the same directory, which helped me a lot, I don't have to search for specific functions in a big 2K lines+ file.

Should you learn go?

I'd obviously tell you to do so, but it depends what you want to do :) For APIs, I'd use it for sure, never doing it in Python ever again. I suggest you use the same light stack as me: net/http, gorilla/mux, GORM and MariaDB. If you're wanting to make a simple website, I guess you can by using a web framework? But if you know JS I'd use Next.JS :)

I hope this post might have helped you in your choice :)

Update: I've switched to PostgresQL and there is no extra delays, around 20ms extra?

🌐
Reddit
reddit.com › r/golang › what are the upsides and downsides of go compared to c#?
r/golang on Reddit: What are the upsides and downsides of Go compared to C#?
April 29, 2022 -

I would like to ask those who have experience working with both C# and Go, what are the upsides and downsides of Go compared to C#? If you would use Go over C#, why? Is there a situation where you think C# is better? I have limited free time to invest in learning a new language and I am a C# dev currently and trying to decide whether it is worth it to me to invest time into learning Go as a C# dev. I really like the language and its concepts but I need some help making my decision. Thank you in advance for your replies.

Top answer
1 of 35
59
Oh boy, let me tell you. I write C# all day at work and Go for basically anything else at this point. Small caveat that my experience is based mostly on working in .NET Framework with a few .NET 5/6 projects. Here's an organized list of my gripes. C# is a HUGE language With 8 ways to do pretty much everything with a constant flood of new features every years with little to no reason as to why other than the C# needs to provide to their PM's that they're useful and new features = productivity. This makes working with C# a pain in the ass because anything you google comes up with 3 or 4 different answers that seemingly don't work with modern .NET, or only work in modern .NET. God forbid you try to find security best practices, you'll be met with 100 ways to do things where 85 of them are depreciated, and the rest don't work at all. Somewhat related, the inheritance model in C# is widely complicated and almost always leads too difficult to understand code. There's too many keywords to define behavior of a class, it takes way too much cognitive overhead to keep track of everything. Using Statements are an abomination Seriously, I don't know who thought that was a good idea. The fact that I can look in a file and not understand where many top-level variables or methods come from is a constant frustration. I know there are ways to force name spaces with using statements, but it's very uncommon and likely won't be expected in ANY team environment. Also, implicit using in C# 10 still makes my soul hurt. Explicit Interfaces This is probably more of a preference, but I find it really difficult to write really flexible code in C# because I have to use explicit Interfaces instead of implicit ones like in Go. When I want fulfill multiple interfaces in C# I always have to look up the process and try to figure out a clean way to implement it. I Hate Visual Studio This is 100% personal preference, but I hate Visual Studio. It's slow, clunky, and has a poor user interface and as someone who uses the CLI for most things, I just can't do what I need to do without clicking 10 buttons in Visual Studio. I'd prefer to use VS Code but the .NET integration is really hit or miss, I find it basically unusable on my M1 mac and my Windows Laptop for work. And if you don't use visual studio the tooling around the CLI is piss poor, especially if you're doing anything .NET Framework related. I also think that the debugger in VS allows developers to be lazy and not implement proper logging for their application so it will crash in production without any useful information. In development they just rely on the debugger to solve any problem (at least that's my experience with my team). Visual Studio hate aside, I don't agree with the idea that a programming language essentially requires a proprietary editor to use. It just really rubs me the wrong way. This was a BIG reason I chose Go for my side client projects. .NET Runtime Is Annoying I've done a lot in Python and Javascript land and one of the big things I didn't like is managing the environment for deployments. Granted .NET is much less complicated most of the time than Python or JS is, but it's still a thorn in my side to have to make sure that .NET is properly installed, and has the right version that is compatible. Go being able to build a static binary that can run basically anywhere is such a game changer for me. It's so freeing, I feel like every programmer should learn a language that can compile to a static binary. Poor Error Handling By Default This isn't C# specific but more of a general pattern. Exceptions are almost never handled properly. Like ever. I REALLY like that go makes errors very present in your code and if you want to ignore an error you have to explicitly do so. Async/Await is a Trap in C# For day to day developers, I rarely see async/await implemented correctly. I don't think C# does a great job at managing concurrency in a clear way. 90% of non web related async code I see is just blocking on a different thread, which I guess is fine, but no one I ask actually thinks that what it's doing. There's So Much "Magic" Magic is sort of a dumb word in programming, but I don't know what else to call it. Every time I spin up a new project for ASP.NET I get super confused on how I'm supposed to do things. There's so much built in configuration that it's really difficult to "discover" things. You really just have to read through the documentation and find all the ways that you can use the framework to do dependency injection and what not. Anytime I want to go outside of the blessed path it's painful and I never really quite understand how I got it to work. --- Some reasons I really like Go Super fast compile times Forced package name spaces Single binary distribution Built in production grade web server Dead simple concurrency The easiest testing experience I've ever had Built in benchmarking tools Standard formatting built in Small language - you can learn the syntax in a week or two. Very little "magic" or implicit behavior, if it does something it's because I told it to do it. Bring your own framework mentality - I really like that I can actually manage my dependencies in a Go project which is more of a knock on other languages than it is on C#. My general feeling when coding is that the language encourages you to be simple and clear when you code, not clever. The pointer and value semantics are SO helpful in understand side-effects Some things I don't like about Go For loops will always be confusing and I think the current implementation was a mistake. Package versioning is weird. I don't get to write more of it. Sometimes the community can be kind jerks about really stupid stuff. --- Other Advise If you're talking about general career advise it's really difficult to say. You'll need to look at your market to really determine what the best move is. C# is used at basically every larger corporation so there will always be jobs, but because of that it can be a little more difficult to find a good wage and/or more senior positions because there's just so many C# developers out there. In my market there isn't a lot of Go jobs, but there aren't a lot of Go developers either so If I were to switch I'd probably jump 20/30% minimum. YMMV though so do some research if this is your main concern. I don't regret learning Go at all. I've had the chance to write 2-3 CLI tools and a few small web projects with Go at work and my coworkers are always really amazed at how quickly I was able to whip something together, and how fast the actual application runs. It's a great tool to have even if it's not your primarily language.
2 of 35
46
Go is more explicit and verbose - but still feels lighter and leaner. C# drains me when I go back to it. There’s too much abstraction and ‘magic’. I, like many, prefer explicit readable code, even if it is a little more verbose, compared to, perhaps, more concise, abstracted code. Also, while not inherent in the languages, .NET as an ecosystem and culture tends to lean to over abstraction - with patterns like IOC and DI being the norm for almost any application and the default mechanism of decoupling in order to enable isolated testing of components. Go is more aligned with the ‘Unix philosophy’ of single-purpose entities which are ‘composed’ to create solutions. This feels lighter, avoids needless complexity, and is more readable - while scaling just as well, or better - given scalability of code is, fundamentally, about readability. Additionally, .NET has many ways to do the same thing and a litany of features that are minor variations on the same thing; for example classes, records, structs, ref types and value types - where Go has the typical standard types - all of which are value types. It also has pointer types that mean you can pass pointers around to any of the value types. And while you need to grock pointers, that’s no more difficult to understand than byref/val etc in .NET. Similarly with concurrency, in .NET you have native threads, the threadpool, task parallel library and async/await. In Go you have standard functions, and a keyword (Go) that makes a function concurrent if you stick it before the invocation - that’s it. Loops - in Go you have for… - that’s it. In .NET you have for, while, foreach, do, parallel.for, IEnumerable.ForEach and so on. For fields, you have fields in Go. In .NET you have fields, inline properties, lambda properties, and full getter/setter properties. I could go on, but I’m sure you get my point. To summarise; I love Go. I find .NET to be a giant hodge-podge of different ideas, approaches and patterns - while these sometimes add some sugar in isolation, they make the cognitive load of development greater overall
🌐
Reddit
reddit.com › r/golang › .net says golang 6x times slower than .net and slower than nodejs
r/golang on Reddit: .NET says golang 6x times slower than .net and slower than nodejs
October 4, 2025 -

I'm not a fan of any language but I know that there are some advantages and disadvantages of languages and framework alongside platforms matter - PHP is slow, yes it is slow comparing to any other languages but if you setup frakenPHP or swoole then is may compare with other languages -

I was just visiting dotnet page and saw that there is benchmark says 6x times faster than go and go even slower than nodejs

Why is it like this ? I'm not saying this is wrong and they are lying but, what is the explanation of this ? What does matter most such test cases?

Sources:

- https://imgur.com/a/Dx5B2kt

- https://dotnet.microsoft.com/en-us/