A type argument is the concrete type supplied for a generic type parameter. Supplying one instantiates the generic function or type at compile time, preserving type safety and avoiding runtime overhead. section 2.9.1
Explicit and contextual type arguments
Given `func getKeys[K comparable, V any](m map[K]V) []K`, a string-keyed map can be passed as `keys := getKeys(m)`. The type argument can also be written explicitly: `keys := getKeys[string](m)`. Both calls use `string` for `K`; the explicit form makes that choice visible. section 2.9.1
Check the constraint before choosing a type argument:
- `K comparable` accepts key types usable with `==` or `!=`; `[]byte` is rejected as an invalid map key type. section 2.9.1
- A custom constraint can narrow the permitted arguments, such as `~int | ~string`, rather than accepting every comparable type. section 2.9.1
keys := getKeys[string](m)
The explicit type argument appears between brackets before the function call’s ordinary arguments. section 2.9.1




