Что: 9950296170be27b8fbbc4b55423e8dd1d37babaf
Когда: 2021-11-20 17:54:54+03:00
Темы: go tip
go stringer goredo оказался первым проектом где я использовал go generate и stringer утилиту. В проекте оказалось ровно одно место подходящее для этой штуки, но в других проектах их десятки. Кому-то конечно же не понравится такой подход, но мне приятен. Есть константы: type InodeTrustType int const ( InodeTrustNone InodeTrustType = iota InodeTrustCtime InodeTrustMtime ) которые при печати выведут ничего не поясняющее для человека значение. Хочется добавить нечто типа: func (i InodeTrustType) String() string { switch i { case InodeTrustNone: return "none" case InodeTrustCtime: return "ctime" case InodeTrustMtime: return "mtime" } } но геморройно, хотя я так много делал прежде. Выполнив "stringer -type=InodeTrustType" я получаю inodetrusttype_string.go файл в котором этот String() метод добавляется. Причём эффективным образом, создавая: const _InodeTrustType_name = "InodeTrustNoneInodeTrustCtimeInodeTrustMtime" var _InodeTrustType_index = [...]uint8{0, 14, 29, 44} где само числовое значение InodeTrustType-а будет индексом в массиве смещений в константной строке. А чтобы это автоматизировать, то можно добавить комментарий прямо в код: //go:generate stringer -type=InodeTrustType
Сгенерирован: SGBlog 0.34.0