第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲取相對于導入包路徑的文件路徑?

如何獲取相對于導入包路徑的文件路徑?

Go
慕妹3146593 2021-10-18 17:15:59
問題是我無法訪問相對于實際使用的包路徑的文件。讓我們考慮這個例子。我有以下結構:~/go/src/github.com/user/dbms  data/    database.db  dbms.go~/projects/myproj/bin  main.godbms.go :package dbmsimport (  "os"  "fmt"  "path/filepath")type dbms struct {  filepath string}func New() *dbms {  return &dbms{filepath: "./data/database.db"}}func (d *dbms) Run() {  fmt.Println(filepath.Abs(d.Path))  // output: /home/timur/projects/myproj/bin/data  // I need: /home/timur/go/src/github.com/user/dbms/data  file, err := os.OpenFile(d.filepath, os.O_RDWR, 0666)  // error}main.go :package mainimport (  "github.com/user/dbms")func main() {  db := dbms.New()  db.Run()}如您所見,dbms.Path解析相對于入口點的路徑而不是包本身。我怎么了?
查看完整描述

2 回答

?
不負相思意

TA貢獻1777條經(jīng)驗 獲得超10個贊

問題是您的數(shù)據(jù)庫文件將不是已編譯二進制文件的一部分。當您運行代碼時,您似乎希望它與二進制文件一起打包。

我認為你應該重新考慮你的方法。您的源代碼將被編譯為要運行的靜態(tài)二進制文件,但該二進制文件將不包含您的數(shù)據(jù)庫文件。嘗試可靠地猜測正確的路徑會很麻煩。

我會將數(shù)據(jù)庫文件的路徑移動到配置參數(shù)中,或者在運行時需要位于當前工作目錄中的配置文件中,或者作為環(huán)境變量。然后,將數(shù)據(jù)庫文件從包目錄中拉出,因為它在那里不會幫助您。

至于在運行時最初獲取文件,您只需添加一個設置函數(shù),該函數(shù)將根據(jù)需要為您的數(shù)據(jù)庫提供支架?;蛘?,如果您希望在數(shù)據(jù)庫中有一些預加載的數(shù)據(jù),只需將它與最終的二進制文件和配置文件放在一個包中即可。

希望有幫助!


查看完整回答
反對 回復 2021-10-18
  • 2 回答
  • 0 關注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號