gpt4 book ai didi

go - 如何计算列号和行号的偏移量? - 去

转载 作者:IT王子 更新时间:2023-10-29 02:16:26 24 4
gpt4 key购买 nike

我需要使用列号和行号作为引用来计算源代码文件中的偏移量(例如 source.go:23:42)。我如何计算偏移量?我使用它通过一些 go 工具( oracleasttoken )分析源代码。

最佳答案

由于线宽不固定,因此无法快速了解。您需要逐字符遍历文件的内容并计算偏移量。像这样的东西:

func findOffset(fileText string, line, column int) int {
// we count our current line and column position
currentCol := 1
currentLine := 1


for offset,ch := range fileText {
// see if we found where we wanted to go to
if currentLine == line && currentCol == column {
return offset
}

// line break - increment the line counter and reset the column
if ch == '\n' {
currentLine++
currentCol = 1
} else {
currentCol++
}

}
return -1; //not found
}

// this here is our source code for example
var sampleText = `package main

var foo = "hello"

var bar ="world"
`


func main() {

fmt.Println(findOffset(sampleText, 1, 1)) //prints 0

fmt.Println(findOffset(sampleText, 3, 5)) //prints 18

}

Playground 链接:http://play.golang.org/p/fWb9N9r9pi

关于go - 如何计算列号和行号的偏移量? - 去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com