Как я могу кодировать позицию формы /pathto/file.go:40:32
, которая возвращается token.Position.String()
на номер posFlag
, который требуется ParseQueryPos
, который выглядит как /pathto/file.go:#550
.Какая кодировка требует posFlag?
Почему?
Я использую инструмент Oracle
для выполнения некоторого статического анализа. Мне нужно запустить Oracle.Query
, для которого требуется параметр типа *QueryPos
. Единственный способ получить *QueryPos
- ParseQueryPos
.
https://github.com/golang/tools/blob/master/oracle/pos.go#L28 говорит, что # 550 является смещением байта, поэтому похоже, что вам нужно пройти через файл, подсчитать байты в первые 39 строк (включая новые строки, разделяющие их), и добавить 31 (если file.go: 1: 1 - байт 0). – twotwotwo
А, и есть «token.Position.Offset», поэтому вам не обязательно все это делать! – twotwotwo