Browse Source

添加获取调用信息函数

yjp 1 year ago
parent
commit
b44637d40f
2 changed files with 49 additions and 0 deletions
  1. 30 0
      caller/caller.go
  2. 19 0
      caller/caller_test.go

+ 30 - 0
caller/caller.go

@@ -0,0 +1,30 @@
+package caller
+
+import "runtime"
+
+func CallFilePath() string {
+	_, file, _, ok := runtime.Caller(1)
+	if !ok {
+		return "Unknown"
+	}
+
+	return file
+}
+
+func CallFunctionName() string {
+	pc, _, _, ok := runtime.Caller(1)
+	if !ok {
+		return "Unknown"
+	}
+
+	return runtime.FuncForPC(pc).Name()
+}
+
+func CallLineNo() int {
+	_, _, line, ok := runtime.Caller(1)
+	if !ok {
+		return 0
+	}
+
+	return line
+}

+ 19 - 0
caller/caller_test.go

@@ -0,0 +1,19 @@
+package caller
+
+import (
+	"testing"
+)
+
+func TestCallInfo(t *testing.T) {
+	if CallFilePath() != "/home/yjp/go-projects/src/go-tools/utils/caller/caller_test.go" {
+		t.Fatal("调用文件名不一致")
+	}
+
+	if CallFunctionName() != "git.sxidc.com/go-tools/utils/caller.TestCallInfo" {
+		t.Fatal("调用函数名不一致")
+	}
+
+	if CallLineNo() != 16 {
+		t.Fatal("调用行数不一致")
+	}
+}