首頁 後端開發 Golang Go中如何取得原始碼檔案名稱和行號?

Go中如何取得原始碼檔案名稱和行號?

Dec 07, 2024 am 09:33 AM

How Can I Get the Source Code File Name and Line Number in Go?

在Go 中擷取原始碼檔案名稱和行號

在C/C 等程式語言中,開發人員可以利用 FILELINE 取得目前原始碼檔案路徑和行號。 Go 是否提供類似的功能?

答:

當然可以。 Go 提供了一個名為 runtime.Caller 的內建函數來存取目前函數的原始碼檔案名稱和行號。

實作:

利用運行時。呼叫者,您可以使用可選的整數參數來呼叫它:

func GetSourceInfo(skip int) (string, int) {
    _, thisFile, thisLine, ok := runtime.Caller(skip)
    if !ok {
        return "", 0
    }
    return thisFile, thisLine
}

skip 參數指定呼叫堆疊向上的層數上升。例如,skip=0 將傳回目前函數的來源訊息,skip=1 將傳回目前函數呼叫者的來源訊息,依此類推。

用法範例:

import (
    "fmt"
    "runtime"
)

func main() {
    file, line := GetSourceInfo(1)
    fmt.Println("Calling function:", file, line)
}

輸出:

Calling function: /path/to/my/file.go 12

以上是Go中如何取得原始碼檔案名稱和行號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1604
29
PHP教程
1509
276
如何在GO中構建Web服務器 如何在GO中構建Web服務器 Jul 15, 2025 am 03:05 AM

搭建一個用Go編寫的Web服務器並不難,核心在於利用net/http包實現基礎服務。 1.使用net/http啟動最簡服務器:通過幾行代碼註冊處理函數並監聽端口;2.路由管理:使用ServeMux組織多個接口路徑,便於結構化管理;3.常見做法:按功能模塊分組路由,並可用第三方庫支持複雜匹配;4.靜態文件服務:通過http.FileServer提供HTML、CSS和JS文件;5.性能與安全:啟用HTTPS、限制請求體大小、設置超時時間以提升安全性與性能。掌握這些要點後,擴展功能將更加容易。

進行音頻/視頻處理 進行音頻/視頻處理 Jul 20, 2025 am 04:14 AM

音視頻處理的核心在於理解基本流程與優化方法。 1.其基本流程包括採集、編碼、傳輸、解碼和播放,每個環節均有技術難點;2.常見問題如音畫不同步、卡頓延遲、聲音噪音、畫面模糊等,可通過同步調整、編碼優化、降噪模塊、參數調節等方式解決;3.推薦使用FFmpeg、OpenCV、WebRTC、GStreamer等工具實現功能;4.性能管理方面應注重硬件加速、合理設置分辨率幀率、控制並發及內存洩漏問題。掌握這些關鍵點有助於提升開發效率和用戶體驗。

在GO中開發Kubernetes運營商 在GO中開發Kubernetes運營商 Jul 25, 2025 am 02:38 AM

編寫KubernetesOperator的最有效方式是使用Go語言結合Kubebuilder和controller-runtime。 1.理解Operator模式:通過CRD定義自定義資源,編寫控制器監聽資源變化並執行調和循環以維護期望狀態。 2.使用Kubebuilder初始化項目並創建API,自動生成CRD、控制器和配置文件。 3.在api/v1/myapp_types.go中定義CRD的Spec和Status結構體,運行makemanifests生成CRDYAML。 4.在控制器的Reconcil

Go PostgreSQL/MySQL的查詢優化技術 Go PostgreSQL/MySQL的查詢優化技術 Jul 19, 2025 am 03:56 AM

TooptimizeGoapplicationsinteractingwithPostgreSQLorMySQL,focusonindexing,selectivequeries,connectionhandling,caching,andORMefficiency.1)Useproperindexing—identifyfrequentlyqueriedcolumns,addindexesselectively,andusecompositeindexesformulti-columnquer

GO頻道解釋了 GO頻道解釋了 Jul 15, 2025 am 03:01 AM

Go的通道分為緩沖和非緩衝兩種,非緩衝通道要求發送和接收同時準備好,適合協調同步操作;而緩衝通道允許數據暫存,適合解耦系統組件。使用時需注意避免向滿緩衝通道寫入或從空通道讀取導致阻塞,以及適時關閉通道以通知接收方數據結束。

以身例子從stdin中讀取 以身例子從stdin中讀取 Jul 27, 2025 am 04:15 AM

使用fmt.Scanf可讀取格式化輸入,適合簡單結構化數據,但字符串遇空格截止;2.推薦使用bufio.Scanner逐行讀取,支持多行輸入、EOF檢測和管道輸入,並可處理掃描錯誤;3.使用io.ReadAll(os.Stdin)一次性讀取全部輸入,適用於處理大塊數據或文件流;4.實時按鍵響應需第三方庫如golang.org/x/term,常規場景使用bufio已足夠;實際建議:交互式簡單輸入用fmt.Scan,行輸入或管道用bufio.Scanner,大塊數據用io.ReadAll,且始終處理

Go oauth2客戶端和服務器實現 Go oauth2客戶端和服務器實現 Jul 16, 2025 am 02:57 AM

OAuth2實現分為客戶端和服務端。客戶端使用golang.org/x/oauth2包,步驟為:1.引入包;2.配置客戶端信息並構建Config對象;3.生成授權鏈接;4.處理回調獲取Token;5.構造帶授權的HTTP客戶端。服務端以go-oauth2/oauth2為例,流程包括:1.初始化存儲;2.設置客戶端信息;3.創建OAuth2服務實例;4.編寫路由處理授權和Token請求。注意事項有:跨域問題、狀態校驗、啟用HTTPS、Token有效期管理、Scope控製粒度。

進行科學計算和數值分析 進行科學計算和數值分析 Jul 23, 2025 am 01:53 AM

Go語言可用於科學計算與數值分析,但需了解其優劣。優勢在於並發支持和性能,適合併行算法如分佈式求解、蒙特卡洛模擬等;社區庫如gonum和mat64提供基礎數值計算功能;可通過cgo或接口調用C/C 、Python實現混合編程提昇實用性。局限在於生態不如Python成熟,可視化和高級工具較弱,部分庫文檔不完善。建議結合Go特性選擇合適場景並參考源碼示例深入使用。

See all articles