Type conversion in go looks a lot like function calls (in python too but here it confused me).

Following looks like Bind returns the result of OptionFunc function call. This function accepts a function as an argument, this is not a very uncommon approach.

func Bind(args ...any) Option {
	return OptionFunc(func(k *Kong) error {
		k.bindings.add(args...)
		return nil
	})
}

Although, the definition of OptionFunc is:

// OptionFunc is function that adheres to the Option interface.
type OptionFunc func(k *Kong) error

OptionFunc is a type and the initial snippet was a type conversion not a function call !
It merely sets the type of the unnamed function func(k *Kong) ... to OptionFunc.

Following might jog memories about creating types from existing types:

type ENV string
const (
    "dev"     ENV
    "release" ENV
)