fmt包
主要分为向外输出内容和获取输入内容两大部分
Print:将内容输出到系统的标准输出
Fprint:将内容输出到一个io.Writer接口类型的变量;可以用这个函数往文件中写入内容
Sprint:把传入的数据生成并返回一个字符串。通常用于拼接字符串
Errorf:根据format参数生成格式化字符串并返回一个包含该字符串的错误返回error类型。通常用来自定义错误类型
package main
import (
"fmt"
"strings"
)
//fmt占位符
//fmt.Printf()格式化输出
//fmt.Print()连续不换行输出
//fmt.Println()换行输出
func main() {
//打印内存地址
ss := []int{1, 2, 3}
fmt.Printf("%p\n", &ss) //使用%p 传的值得是内存地址(指针)
fmt.Printf("%p\n", &ss[0])
fmt.Printf("%p\n", &ss[1])
fmt.Printf("%p\n", &ss[2])
n := 100
//打印类型
fmt.Printf("%T\n", n)
//打印值
fmt.Printf("%v\n", n)
//打印二进制
fmt.Printf("%b\n", n)
//打印十进制
fmt.Printf("%d\n", n)
//打印八进制
fmt.Printf("%o\n", n)
//打印十六进制
fmt.Printf("%x\n", n)
f := 12.34
fmt.Printf("%b\n", f)//无小数部分、二进制指数的科学计数法,如-123456p-78
fmt.Printf("%e\n", f)//科学计数法,如-1234.456e+78
fmt.Printf("%E\n", f)//科学计数法,如-1234.456E+78
fmt.Printf("%f\n", f)//有小数部分但无指数部分,如123.456
fmt.Printf("%F\n", f)//同%f
fmt.Printf("%g\n", f)//根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
fmt.Printf("%G\n", f)//根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)
s := "hello/wzb"
//打印字符串
fmt.Printf("string:%s\n", s)
fmt.Printf("value:%v\n", s)
o := struct{ name string }{"teizhu"}
fmt.Printf("%+v\n", o)//输出结构体时会添加字段名
fmt.Printf("%v\n", o)
fmt.Printf("%#v\n", o)//值的Go语法表示
sc := 'c'
fmt.Printf("字符:%c\n", sc) //打印字符
//Fprint
// 向标准输出写入内容
fmt.Fprintln(os.Stdout, "向标准输出写入内容")
//Sprint
ss1 := fmt.Sprint("铁柱")
name1 := "铁柱"
age := 18
ss2 := fmt.Sprintf("name:%s,age:%d", name1, age)
ss3 := fmt.Sprintln("铁柱")
fmt.Println(ss1, ss2, ss3)
//Errorf
err := fmt.Errorf("这是一个错误") //定义一个error
e := errors.New("原始错误e")
w := fmt.Errorf("Wrap了一个错误%w", e)
}
Scan:从标准输入获取用户的输入。
- 读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符
- 如果读取的数据个数比提供的参数少,会返回一个错误报告原因。
- 如果想完整获取输入的内容,而输入的内容可能包含空格,这种情况下可以使用bufio包来实现。
func bufioDemo() {
reader := bufio.NewReader(os.Stdin) // 从标准输入生成读对象
fmt.Print("请输入内容:")
text, _ := reader.ReadString('\n') // 读到换行
text = strings.TrimSpace(text)
fmt.Printf("%#v\n", text)
}
Fscan:类似scan不过不是从标准输入中读取数据而是从io.Reader中读取数据
Sscan:类似scan不过不是从标准输入中读取数据而是从指定字符串中读取数据