go fmt包分析

fmt 是go的基础包之一, 也是使用比较频繁的库,最近也一直在研究go,就把这个库作为分析的第一个基础库,后续在陆续把其他基础库都做个分析。

fmt 常用方法有以下几种

1、输出到控制台(命令行)

   print() ,println() 两者区别就是ln是加了换行符的,最后输出都是输出控制台,一般用来做调试用,返回值为输出字符的个数和error

 printf() 变量通过占位符输出到控制台

2、变量返回字符串

Sprint(),Sprintln()  功能和print println 一样,底层调用也一样,只不过这个不输出到控制台,只返回字符串

 Sprintf()  变量通过占位符返回字符串

3、Fprint(),Fprintln()  这两个是print和println底层调用的方法,功能也一致,估计是以前留下来的只是可能名字太长吧,就用print和println来重新命名了俩新的方法

4、Scan(),Scanf(),Scanln()  这三个和print三个方法正好相反,它们是从标准输入读取数据,也就是命令行读取输入的数据
例:

var (

name    string

age    int

married bool

)

fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)

fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)

命令行 输入: 1:wyf 2:22 3:true   看看输出什么结果

接下来分析的是占位符,go中占位符分不同的类型,以下是别人已经总结好的,我就直接拿来用了,感谢作者

General

%v以默认的方式打印变量的值

%T打印变量的类型

Integer

%+d带符号的整型,fmt.Printf("%+d", 255)输出+255

%q打印单引号

%o不带零的八进制

%#o带零的八进制

%x小写的十六进制

%X大写的十六进制

%#x带0x的十六进制

%U打印Unicode字符

%#U打印带字符的Unicode

%b打印整型的二进制

Float

%f(=%.6f) 6位小数点

%e(=%.6e) 6位小数点(科学计数法)

%g用最少的数字来表示

%.3g最多3位数字来表示

%.3f最多3位小数来表示

String

%s正常输出字符串

%q字符串带双引号,字符串中的引号带转义符

%#q字符串带反引号,如果字符串内有反引号,就用双引号代替

%x将字符串转换为小写的16进制格式

%X将字符串转换为大写的16进制格式

% x带空格的16进制格式

String Width (以5做例子)

%5s最小宽度为5

%-5s最小宽度为5(左对齐)

%.5s最大宽度为5

%5.7s最小宽度为5,最大宽度为7

%-5.7s最小宽度为5,最大宽度为7(左对齐)

%5.3s如果宽度大于3,则截断

%05s如果宽度小于5,就会在字符串前面补零

Struct

%v正常打印。比如:{sam {12345 67890}}

%+v带字段名称。比如:{name:sam phone:{mobile:12345 office:67890}

%#v用Go的语法打印。

比如main.People{name:”sam”, phone:main.Phone{mobile:”12345”, office:”67890”}}

Boolean

%t打印true或false

Pointer

%p带0x的指针

%#p不带0x的指针

作者:gowk

链接:https://www.jianshu.com/p/8be8d36e779c

来源:简书

下篇分析下sync包

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,537评论 0 5
  • fmt.Printf("%d\n", 123)// 这种方式输出整型的二进制表示方式fmt.Printf("%b\...
    最近有点懒阅读 3,109评论 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,994评论 1 10
  • 【格式化输出】 // 格式化输出:将 arg 列表中的 arg 转换为字符串输出 // 使用动词 v 格式化 ar...
    小流歌_阅读 1,204评论 0 0
  • 小区不大也就十二栋楼房四周有两米高的围栏。楼房中间是好大一块绿地苜蓿,还有成排的树木。天高云淡的秋天总是满眼的绿色...
    流敏阅读 103评论 0 0