Okay, macros. Either way, it provides what most people are asking for in generics (not you, perhaps), even if the implementation isn&#x27;t exactly pleasant. From a practical standpoint, there really isn&#x27;t a whole lot of difference in utilizing max (other than the ugliness):<p><pre><code>    # Common pattern in other languages
    max&lt;int&gt;(1, 2)

    # Similar pattern in Go
    #go:generate gofmt -r &#x27;T -&gt; int&#x27; -w max.go
    max(1, 2)
</code></pre>
But yes, &quot;true&quot; generics are much more complicated (and arguably impossible in Go without major changes to the language), I realize. A number of languages that even claim to have generics fall short on that front, which is a path the Go authors have said they do not want to go down.<p>Although you do have me curious how you&#x27;d implement max in C  in this type-safe way using standard tooling:<p><pre><code>    #define max(a, b) (a &gt; b ? a : b)
</code></pre>
...obviously wouldn&#x27;t fit the bill since it doesn&#x27;t enforce types like to Go version does.