Нет реальной цели иметь пустые имена методов, и вы не можете вызывать их каким-либо образом (даже через отражение, они не будут отображаться среди (экспортируемых) методов типа, см. * 1001). * Go Playground ). Это просто явно не запрещено спецификацией языка.
Имя метода:
MethodName = identifier .
Имя метода может быть любым, допустимым идентификатором :
identifier = letter { letter | unicode_digit } .
letter = unicode_letter | "_" .
unicode_letter = /* a Unicode code point classified as "Letter" */ .
unicode_digit = /* a Unicode code point classified as "Number, decimal digit" */ .
Фраза «непустые имена методов и полей должны быть различны» просто означает, что имена методов (и полей) должны быть различными, но вы можете добавить 2 отдельных пустых метода, они не конфликтуют. У пустых методов нет имени, которое могло бы конфликтовать с чем-либо, включая другие пустые методы.