我是 Go 的新手,并且一直在解决我在尝试编写的代码中遇到的不同问题。有一个问题让我摸不着头脑。我一直在网上搜索,但到目前为止还没有找到解决这个问题的方法。
正如您将在下面的代码中看到的,我使用flag来指定是否创建日志文件。我遇到的问题是,如果我放入循环w := bufio.NewWriter(f)内,if则w无法从以下for循环访问。如果我将它留在if循环之外,则buffio无法访问f.
我知道我错过了一些非常简单的东西,但此刻我不知所措。
有没有人有什么建议?
package main
import (
"bufio"
"flag"
"fmt"
"os"
"time"
"path/filepath"
"strconv"
)
var (
logFile = flag.String("file", "yes", "Save output into file")
t = time.Now()
dir, _ = filepath.Abs(filepath.Dir(os.Args[0]))
)
func main() {
flag.Parse()
name := dir + "/" + "output_" + strconv.FormatInt(t.Unix(), 10) + ".log"
if *logFile == "yes" {
f, err := os.Create(name)
if err != nil {
panic(err)
}
defer f.Close()
}
w := bufio.NewWriter(f)
for _, v := range my_slice {
switch {
case *logFile == "yes":
fmt.Fprintln(w, v)
case *logFile != "yes":
fmt.Println(v)
}
}
w.Flush()
}
Smart猫小萌
相关分类