1.5 位置信息
go/token
包中的Position
表示更詳細的位置信息,它被定義為一個結構體:
type Position struct {
Filename string // filename, if any
Offset int // offset, starting at 0
Line int // line number, starting at 1
Column int // column number, starting at 1 (byte count)
}
其中,Filename
表示文件名,Offset
對應文件內的字節偏移量(從0開始),Line
和Column
分別對應行列號(從1開始)。比較特殊的是Offset
成員,它用于從文件數據定位代碼,但是輸出時會將偏移量轉換為行列號輸出。
輸出位置信息時,根據文件名、行號和列號共有6種組合:
func main() {
a := token.Position{Filename: "hello.go", Line: 1, Column: 2}
b := token.Position{Filename: "hello.go", Line: 1}
c := token.Position{Filename: "hello.go"}
d := token.Position{Line: 1, Column: 2}
e := token.Position{Line: 1}
f := token.Position{Column: 2}
fmt.Println(a.String())
fmt.Println(b.String())
fmt.Println(c.String())
fmt.Println(d.String())
fmt.Println(e.String())
fmt.Println(f.String())
}
實際輸出結果如下:
hello.go:1:2
hello.go:1
hello.go
1:2
1
-
行號從1開始,是必需的信息,如果缺少行號則輸出“-”,表示無效的位置。
推薦閱讀
- 微服務與事件驅動架構
- Apache Spark 2.x Machine Learning Cookbook
- Learning Data Mining with Python
- Java游戲服務器架構實戰
- 鋒利的SQL(第2版)
- TypeScript實戰指南
- Access 2016數據庫管
- Learning Apache Mahout Classification
- 深入RabbitMQ
- Mastering Business Intelligence with MicroStrategy
- Learning Unreal Engine Android Game Development
- Python程序設計開發寶典
- .NET 4.0面向對象編程漫談:應用篇
- SSH框架企業級應用實戰
- Splunk Essentials