gpt4 book ai didi

go - 如何获取导入包的路径

转载 作者:行者123 更新时间:2023-12-01 22:27:56 25 4
gpt4 key购买 nike

尝试获取导入包的路径时遇到困难。当我在导入的包中打印os.Getwd()的结果时,它显示的路径与main包中的相同。
这就是我所做的。
项目结构
enter image description here
lib / lib.go

package lib

import "os"
import "fmt"

func init() {
dir, _ := os.Getwd()
fmt.Println("lib.init() :", dir)
}

func GetPath() {
dir, _ := os.Getwd()
fmt.Println("lib.GetPath() :", dir)
}
main.go
package main

import "os"
import "fmt"
import "test-import/lib"

func main() {
dir, _ := os.Getwd()
fmt.Println("main :", dir)
lib.GetPath()
}
结果
lib.init() : /Users/novalagung/Documents/go/src/test-import
main : /Users/novalagung/Documents/go/src/test-import
lib.GetPath() : /Users/novalagung/Documents/go/src/test-import
os.Getwd()lib/lib.go的结果仍然与main相同。我想要的是 /Users/novalagung/Documents/go/src/test-import/lib/包的真实路径
我该怎么办?可能吗?

最佳答案

如果可以获取包中某些内容的引用,则可以使用反射来获取导入路径。

这是Play的示例:

package main

import (
"bytes"
"fmt"
"reflect"
)

func main() {
var b bytes.Buffer
fmt.Println(reflect.TypeOf(b).PkgPath())
}

关于go - 如何获取导入包的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58719035/

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