在NodeJS中,我使用__dirname.在golang ,与此相当的是什么?

我在谷歌上搜索了一下,找到了这篇文章http://andrewbrookins.com/tech/golang-get-directory-of-the-current-file/.他在其中使用以下代码

_, filename, _, _ := runtime.Caller(1)
f, err := os.Open(path.Join(path.Dir(filename), "data.csv"))

但是这是在果朗的正确方式还是惯用的方式呢?

推荐答案

这应该可以做到这一点:

import (
    "fmt"
    "log"
    "os"
    "path/filepath"
)

func main() {
    dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
    if err != nil {
            log.Fatal(err)
    }
    fmt.Println(dir)
}

Go相关问答推荐

Google OAuth2没有刷新令牌

GORM没有从 struct 创建完整的表,如何修复?

Golang应用程序:所请求的资源上不存在HTTP-Control-Allow-Origin标头

Golang SDK for DynamoDB:ReturnValuesOnConditionCheckFailure在条件chcek失败发生时不返回条件的详细信息

当我有外键时,如何使用 GORM 创建数据库的新条目

将这两个函数合二为一的惯用方法

如何创建在responseWriter.Write 上返回错误的http.ResponseWriter 模拟实例?

是否需要手动调用rand.Seed?

仅使用公共 api 对 alexedwards/scs 进行简单测试

我如何使用 TOML fixtures 在使用 Go Buffalo 框架的开发环境中为我的数据库 seeder ?

无法使用 gocsv 读取引用字段

接受通道和切片的通用函数

如何将多个切片打印为一个切片?

如何使用 Status 字段创建 Kubernetes 对象?

Golang 工作池实现意外工作

有没有办法判断值是否满足接口中定义的类型约束?

Golang BigInt 部门

使用 bolthold 3 条件进行 boltDB 查询

正则表达式处理数字签名的多个条目

go routine 和接收错误或成功的通道