在fmt包中,主要是输入和输出
对于输出:print
有三大类:pringf fprintf sprintf
print fprint sprint
println fprintln sprintln
通过书写可以看出
第一行的按照格式化文本输出内容
第二行输出时不会换行
第三行的会换行
而第一列的是输出内容到os.stdout
第二列是io.writer
第三列是字符串
同样的对于scan
有三大类 scanf fscanf sscanf
scan fscan sscan
scanln fscanln sscanln
与上面一样,带ln结束的是读取到下一行停止;什么都不带的是无限制换行;带f的是格式化文本输入
以f开头的是从io.reader读取;以s开头的是从一个参数字符串读取文本;什么都不带得到是从os.stdin读取文本
LOG包
通过log的new函数可以得到一个logger的结构体指针
type Logger struct {
mu sync.Mutex // ensures atomic writes; protects the following fields
prefix string // prefix to write at beginning of each line
flag int // properties
out io.Writer // destination for output
buf []byte // for accumulating text to write
}
func New(out io.Writer, prefix string, flag int) *Logger {
return &Logger{out: out, prefix: prefix, flag: flag}
}
out中只要实现了io.writer都可以作为out,比如说os文件流
pfefix可以指定日志信息的前缀,比如说[debug]等等
flag设置的时间格式,一般使用默认得到LstdFlags就可以
logfile, err := os.OpenFile("my.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
log.Fatalln("fail to create log file!")
}
defer logfile.Close()
l:=log.New(logfile, "", log.LstdFlags)
l.Println("test")
num:=5
l.Println("test %d",num)
这样log包的日志功能基本上能满足一般的开发需要,但相对还是比较简单,缺少日志分层控制,缺少对json格式的支持等,所以如果有需要灵活定制或大并发、大吞吐量的日志开发需求,建议考虑使用其他方法或途径来实现。
本文深入探讨了Go语言中fmt包的功能,包括不同类型的输入输出操作,如打印、格式化和扫描。同时,详细介绍了log包的使用,包括创建日志记录器、设置日志前缀和标志,以及如何将日志输出到文件。文章还讨论了log包的局限性,为读者提供了更高级日志需求的解决方案。
4399

被折叠的 条评论
为什么被折叠?



