This merging of semantically different concepts into the same language feature was the biggest mistake of Go in my opinion. The gains in simplicity are entirely offset by the losses in correctness and comprehension.
The worst example is pointers since they're used to represent both references and optional values. It's often very difficult to know which meaning a function is using at first glance.
The worst example is pointers since they're used to represent both references and optional values. It's often very difficult to know which meaning a function is using at first glance.