转到父目录

I've some command line program which I need to read files from parent folder, I mean

-parentDir
 -- myproject
 --- cmd
 ----main.go 

 --otherdir
  -file.json 

As you can see otherdir is like sibling to myproject and I need from my main.go read the file.json

what I've tried is like following

func visit(path string, f os.FileInfo, err error) error {
  fmt.Printf("Visited: %s
", path)
  return nil
} 


func main() {
  flag.Parse()
  root := flag.Arg(0)
  err := filepath.Walk(root, visit)
  fmt.Printf("filepath.Walk() returned %v
", err)
}

I've also try to provide args(-1) which doesnt help... Any idea how from command line program I can read some files that on level up from my executable ?

I've also tried with

import "github.com/mitchellh/go-homedir"


func Path(path string) (error, string) {
    home, err := homedir.Dir()
   }

this give the root directory which doesnt help either...

It doesn't matter where the binary is, it matters what the working directory is (the directory you're in when you execute the program). All relative paths will be relative to the current working directory. So, if you're executing from myproject, you'd use something like ../ as the root path to Walk.

That said, I would highly recommend you make the path configurable, rather than assuming the binary will always be executed from some particular location within the source tree.