本文整理汇总了Golang中go/token.File.Offset方法的典型用法代码示例。如果您正苦于以下问题:Golang File.Offset方法的具体用法?Golang File.Offset怎么用?Golang File.Offset使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类go/token.File
的用法示例。
在下文中一共展示了File.Offset方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: GetRangeLines
func GetRangeLines(f *token.File, Pos, End token.Pos, fileSize int) (lines []int, firstLineNum int) {
lines = []int{}
firstLineNum = -1
l := f.Line(Pos)
for p := Pos; p <= End; p++ {
if f.Line(p) > l {
l = f.Line(p)
if firstLineNum == -1 {
firstLineNum = l
}
lines = append(lines, f.Offset(p))
}
}
print(End)
print(" -> ")
println(fileSize + f.Base() - 1)
if (int(End) == fileSize+f.Base()-1) || f.Line(End+1) > l {
lines = append(lines, f.Offset(End+1))
if firstLineNum == -1 {
firstLineNum = f.Line(End + 1)
}
}
return
}
示例2: GetLines
func GetLines(f *token.File) []int {
lines := make([]int, 0, 20)
l := -1
for i := f.Base(); i < f.Base()+f.Size(); i++ {
if f.Line(token.Pos(i)) > l {
l = f.Line(token.Pos(i))
lines = append(lines, f.Offset(token.Pos(i)))
}
}
return lines
}
示例3: getRangeLinesAtLeastOne
func getRangeLinesAtLeastOne(f *token.File, Pos, End token.Pos, fileSize int) (lines []int, firstLineNum int) {
lines = []int{}
firstLineNum = -1
l := f.Line(Pos)
for p := Pos; p <= End; p++ {
if f.Line(p) > l {
l = f.Line(p)
if firstLineNum == -1 {
firstLineNum = l
}
lines = append(lines, f.Offset(p))
}
}
if (int(End) == fileSize+f.Base()-1) || f.Line(End+1) > l {
lines = append(lines, f.Offset(End+1))
if firstLineNum == -1 {
firstLineNum = f.Line(End + 1)
}
}
if firstLineNum < 0 {
for p := End; ; p++ {
if f.Line(p) > l {
firstLineNum = l
lines = append(lines, f.Offset(p))
break
}
}
}
return
}
示例4: printDecls
func printDecls(tf *token.File, f *ast.File) {
for _, d := range f.Decls {
fmt.Printf("> %d %d\n", tf.Offset(d.Pos()), tf.Offset(d.End()))
}
}