比如我需要设置程序的运行结果都存在“~/tem”下,“~”的意思是当前用户目录,但是Golang会把它当成普通的波浪线。我必须傻逼的要求用户输入“/home/USER/tem”么?
package main
import (
"flag"
"fmt"
"log"
"os"
"os/user"
)
var dir = flag.String("dir", "", "input a dir")
func main() {
flag.Parse()
if len(*dir) == 0 {
log.Fatal(nil)
}
outputDir := os.Expand(*dir, func(s string) string {
if s == "~" {
u, err := user.Current()
if err != nil {
return ""
}
return u.HomeDir
}
return ""
})
fmt.Println(outputDir)
}
#2
更多评论
这样如何:
```go
package main
import (
"flag"
"fmt"
"log"
"os"
"os/user"
)
var dir = flag.String("dir", "", "input a dir")
func main() {
flag.Parse()
if len(*dir) == 0 {
log.Fatal(nil)
}
outputDir := os.Expand(*dir, func(s string) string {
if s == "~" {
u, err := user.Current()
if err != nil {
return ""
}
return u.HomeDir
}
return ""
})
fmt.Println(outputDir)
}
```
#1