This feels like it should ideally be something public in the structs package so anyone can leverage it, not just a specially blessed internal thing for the sync package.
https://github.com/golang/go/issues/70811 Go moves slowly
I agree, its a nice piece of semantics to be added to a struct
It's not a specially blessed type. As the article says, anything that implements sync.Locker acts like this.