This was a simplification of the answer, C can use both forms. In thesis Go could also, I do not know if the linker language is capable today. Unless you have something in the language specification that prevents dynamic linking (which I know you do not have), nothing prevents it from having.
The static is to create a monolithic executable, so everything you need is already there in the executable.
Dynamic allows parts to be generated separately and added to the executable later (during execution). These parties need to have a way of communicating, a basic protocol, but they do not need to know the details of what is in each part. Each part is linked separately. It may be from different vendors that they only offer an executable access API for dynamic loading (such a way to communicate).
Advantages and Disadvantages of Dynamics
Many techniques can be used for this, but the most common is to have Dynamic-Link Library (DLLs) or Shared Object OSs that are executables prepared to be loaded together with another main executable.
In the past the size of the executable and the reuse of parts that can be used for various applications were very desirable advantages. Today this is less important and the ability to replace parts independently has become the main advantage of dynamic linking.
Note that if you make an executable and multiple DLLs, the total size of the executable gets larger, not only on disk (for network transmission) but also in memory. It's not much, but it's bigger. It would only compensate if the computer already has many of these DLLs.
There are cases where dynamic linking is required because of the license (LGPL for example).
Advantage and disadvantages of static
Particularly I prefer static as far as it goes. It is easier to manage and install, has more load performance (although minimal) and allows better optimizations (being able to analyze everything is very powerful).
But it's less flexible, does not allow this plugin system. I almost always do not need this flexibility. Still less need to reuse parts of the executable.
It also allows you to avoid some indirections and other unnecessary techniques in many cases. An example is create getters and setters because something can be loaded dynamically . In guaranteed linking this technique does not help much.
Some will say that it does not load the entire executable if it is dynamic, but this occurs with static as well. The operating system is smart and loads only the required pages. This is not a disadvantage of static
Conclusion
You can read more about this in What's the difference between DLL and lib? . And also Performance difference between static and shared library