主要为向外输出内容和获取输入内容
fmt.Print
![](https://img-blog.csdnimg.cn/img_convert/3772deeae645ddba115e5546dc2c1371.png)
os.Stdout代表标准输出,即控制台输出
Print 标准输出
Println 标准输出+换行
Printf 格式化标准输出
占位符
占位符 | 说明 |
%v | 值的默认格式表示 |
%+v | 类似%v,但输出结构体时会添加字段名 |
%#v | 值的Go语法表示 |
%T | 打印值的类型 |
%% | 百分号 |
%t | true or false |
%b | 表示为二进制 |
%c | 该值对应的unicode码值 |
%d | 表示为十进制 |
%o | 表示为八进制 |
%x | 表示为十六进制,使用a-f |
%X | 表示为十六进制,使用A-F |
字符串和[]byte
占位符 | 说明 |
%s | 直接输出字符串或者[]byte |
%q | 该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示 |
%x | 每个字节用两字符十六进制数表示(使用a-f |
%X | 每个字节用两字符十六进制数表示(使用A-F) |
指针
占位符 | 说明 |
%p | 表示为十六进制,并加上前导的0x |
特殊
空格 | 对数值,正数前加空格而负数前加负号;对字符串采用%x或%X时(% x或% X)会给各打印的字节之间加空格 |
Fprint
将内容输出到一个io.Writer接口类型的变量w中。
func Fprint(w io.Writer, a ...any)(n int, err error){
p :=newPrinter()
p.doPrint(a)
n, err = w.Write(p.buf)
p.free()
return
}
func Fprintf(w io.Writer, format string, a ...any)(n int, err error){
p :=newPrinter()
p.doPrintf(format, a)
n, err = w.Write(p.buf)
p.free()
return
}
func Fprintln(w io.Writer, a ...any)(n int, err error){
p :=newPrinter()
p.doPrintln(a)
n, err = w.Write(p.buf)
p.free()
return
}
n是写入的字节数量,err是返回的错误
用于向文件写入数据,写文件权限
//r表示可读
//w表示可写
//x表示可执行
//第1位:文件属性,一般常用的是"-",表示是普通文件;"d"表示是一个目录。
//第2~4位:文件所有者的权限rwx (可读/可写/可执行)。
//第5~7位:文件所属用户组的权限rwx (可读/可写/可执行)。
//第8~10位:其他人的权限rwx (可读/可写/可执行)。
//在golang中,可以使用os.FileMode(perm).String()来查看权限标识:
//os.FileMode(0777).String() //返回 -rwxrwxrwx 111 111 111
//os.FileMode(0666).String() //返回 -rw-rw-rw- 110 110 110
//os.FileMode(0644).String() //返回 -rw-r--r--
//0777表示:创建了一个普通文件,所有人拥有所有的读、写、执行权限
//0666表示:创建了一个普通文件,所有人拥有对该文件的读、写权限,但是都不可执行
//0644表示:创建了一个普通文件,文件所有者对该文件有读写权限,用户组和其他人只有读权限,都没有执行权限
Sprint
func Sprint(a ...any)string{
p :=newPrinter()
p.doPrint(a)
s :=string(p.buf)
p.free()
return s
}
func Sprintf(format string, a ...any)string{
p :=newPrinter()
p.doPrintf(format, a)
s :=string(p.buf)
p.free()
return s
}
func Sprintln(a ...any)string{
p :=newPrinter()
p.doPrintln(a)
s :=string(p.buf)
p.free()
return s
}
把传入的数据生成并返回一个字符串
用于将多种类型的数据组合为一个字符串
Errorf
func Errorf(format string, a ...any) error
将字符串类型转为error类型
Scan
func Scan(a ...any)(n int, err error){
return Fscan(os.Stdin, a...)
}
从os.Stdin标准输入(控制台输入)输入文本,以空格分割
n为成功扫描的个数,err为error
var a int
var b string
fmt.Scan(&a,&b)//输出 10 string
//10赋给a string赋给b
fmt.Scanf("1: %d ,2: %s "&a,&b)//需要输入 1:10 ,2:string