
When I saw this question, I was momentarily dazed—what areas can Go handle that .NET cannot, and C# fails at?
Let’s break it down and analyze each point where Go might have an edge:
1. Cross-compilation
Compiling programs for Linux and Mac platforms on Windows—Go can do this, and C# should be able to as well via the publish mechanism.
2. Object-Oriented Programming
This discussion essentially asks, “Can Go reach the level of .NET?”
Although Go’s interface and struct can separate “implementation and declaration,” C#’s interface can also do this, but not as thoroughly as Go. This might be a “weakness” of C#.
At the same time, C#’s strict Interface/Implement mechanism ensures the safety of large projects, preventing the chaos of interface{} flying everywhere in some Go programs.
Another point: I personally find C#’s Class mechanism more aligned with my programming mindset. Many older programmers follow a similar trajectory—from C to C++ to Java—always with Class as their shield.
After writing classes for so many years, even when using Go, it’s still the soul of a class.
Don’t laugh at me—I usually define a struct and then start defining methods, like this:
type Person {
Name string
Age int
}
// Now entering C++ mode
func (p Person) CalSome() {
}
func (p *Person) IncSome() {
}
// Start calling
p := Person{
Name:"ttt",
age:45
}
p.IncSome()
Thinking it over, how much difference is there really from C#? Personally, not much!
In terms of program “beauty,” C# is actually more elegant!
3. Decompilation
In the past, after compiling a Go executable on Windows, decompiling it back to Go source code was nearly impossible.
With C#, it’s very easy. If you know it’s a .NET code snippet, there are many tools for decompilation, including ILDASM, dotPeek, ILSPY.
Similarly, Java has tools like jd.
Now that .NET provides the AOT option, its resistance to decompilation has greatly improved. AOT-compiled code is native code; decompiling it is as hard as with Go.
Long periods of division lead to unity, and vice versa. Languages also “borrow” features from each other.
4. Docker Image Size
This is an area where Go excels.
Using Alpine as the base image, I recently built an image that showed a size of 13MB with docker images.
If using “scratch” as the base, it would be even smaller.
In contrast, .NET’s AspNetCore image is significantly larger—30MB+.
If many Docker images need to run in Kubernetes, Go images will undoubtedly consume much less space.
5. Father (Backing)
Finally, we have to compare “fathers”—after all, a tech-savvy second-generation is born in Rome, while ordinary people’s life goal is Rome itself!
Go’s father is Google.
.NET’s father is Microsoft!
One is a somewhat aging “new-era overlord,” the other is an “Old Money” that has refreshed its look.
Comparatively, Google may be more dominant.
From this angle, Go wins slightly; .NET loses slightly.
Of course, the father’s influence is huge. .NET has never been well-received since its birth, often suppressed by Java.
This is especially prominent in our Panda Nation (China).
Now, in China’s big companies, Tencent is fully transitioning its primary language from C/C++ to Go; ByteDance defaults to Go as its first programming language—unless there are special requirements, Go is used for development, with Rust even trailing behind; Qi Ni’s Xu Zhiwei has always been a fervent Go advocate, even developing a Go+ language as an improved version of Go.
Currently, except for Alibaba, which sticks with Java, Go is very popular among China’s large companies. In comparison, .NET struggles, barely surviving in industrial control, MES, IoT, HIS, etc., with salaries far from optimistic.
In the Panda Nation, in terms of popularity, Go undoubtedly crushes .NET.
Summary
From syntax and functionality, what Go can do, .NET can also achieve, even better.
From size, Go is more lightweight, while .NET has years of accumulation that are hard to overturn.
From popularity, especially in the internet sector, Go’s usage rate far surpasses .NET; while in non-internet fields like factories, .NET is more prevalent.
A rising star like Lin Xiangru, an aging general like Lian Po—can they ever reconcile?
I am Mingyue,
A storyteller of the internet!