2016-05-27 4 views
0

Как получить аннотацию функции go go? Пример:Как получить аннотацию функции go go?

// @annotation1 
// @annotation2 
func Tags() string { 
     return "" 
} 

Как получить "@ annotation1" и "@ annotation2"?

+0

Насколько я знаю, это только комментарии, и их невозможно получить. – evanmcdonnal

+0

Вы можете, однако, использовать пакет [ast] (https://godoc.org/go/ast). –

+2

@ T.Claverie Я имею в виду, конечно, вы можете проанализировать исходный файл как строку и извлечь комментарии, но нет ничего формального, как использование рефлекса для получения тегов полей, как вы упомянули в своем ответе. – evanmcdonnal

ответ

2

Короткий ответ, нет никакой поддержки для аннотаций в Голанге. Что используется, если теги, которые вы можете получить из пакета reflect.

Итак, у вас нет аннотаций в Go, и, насколько мне известно, нет библиотеки, которая их предоставляет. В зависимости от того, что вы хотите сделать, обычно тегов более чем достаточно, и вы можете использовать силу языка для достижения желаемых результатов.

Должно быть возможным реализовать их, поскольку вы можете получить строки документации, как это делает PHP. Однако в большинстве случаев это не требуется.

EDIT:

В Go, у вас есть доступ к документации, полей структур, методов, интерфейсов, функций (godoc не магическая) через ast пакет. Однако для этого требуется разбор файлов, нет такой функции, как type.getDocComments(), как в PHP.

Таким образом, теоретически возможна реализация. Тем не менее, аннотации, о которых вы просите, просто не являются частью философии Голанга. Существует множество библиотек, которые широко используют теги, но не используют аннотации.

1

Я не знаю какой-либо родной поддержки чего-то, что тянет определенные теги от комментариев - однако встроенная функциональность godoc действительно тянет из комментариев, непосредственно примыкающих к функциям. Если вы пытаетесь создать документацию, это может быть полезно.

В дополнение к godoc, я знаю, что golang plugin for IntelliJ извлекает эти комментарии в качестве справки/документации для встроенных дополнений и предложений.

Надеюсь, это поможет!

Смежные вопросы