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開始,是必需的信息,如果缺少行號則輸出“-”,表示無效的位置。
推薦閱讀
- Building Modern Web Applications Using Angular
- 軟件架構設計:大型網站技術架構與業務架構融合之道
- C語言最佳實踐
- ArcGIS By Example
- 單片機應用與調試項目教程(C語言版)
- 用戶體驗增長:數字化·智能化·綠色化
- Mastering Web Application Development with AngularJS
- PHP編程基礎與實踐教程
- Java程序設計入門(第2版)
- Practical Responsive Typography
- Enterprise Application Architecture with .NET Core
- Developer,Advocate!
- 第五空間戰略:大國間的網絡博弈
- KnockoutJS Blueprints
- Access 2016數據庫應用與開發:實戰從入門到精通(視頻教學版)