fmt包的格式化输出输入
fmt包的格式化输出
摘自(https://www.cnblogs.com/yinzhengjie/p/7680829.html/)
- 常用
%d 表示为十进制
%c 该值对应的unicode码值
%T 值的类型的Go语法表示
%v 使用默认格式输出的内置或者自定义类型的值,或者是使用其类型的String()方法输出自定义值,(如果有的话) - 通用
%v 值的默认格式表示。当输出结构体时,扩展标志(%+v)会添加字段名
%#v 值的Go语法表示
%T 值的类型的Go语法表示
%% 百分号 - 布尔值
%t 单词true或false - 整数
%b 表示为二进制
%c 该值对应的unicode码值
%d 表示为十进制
%o 表示为八进制
%q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
%x 表示为十六进制,使用a-f
%X 表示为十六进制,使用A-F
%U 表示为Unicode格式:U+1234,等价于”U+%04X” - 浮点数、复数的两个组分
%b 无小数部分、二进制指数的科学计数法
%G 根据实际情况采用%E或%F格式(以获得更简洁、准确的输出) - 字符串和[]byte
%s 直接输出字符串或者[]byte %q 该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示
%x 每个字节用两字符十六进制数表示(使用a-f)
%X 每个字节用两字符十六进制数表示(使用A-F) - 指针
%p 表示为十六进制,并加上前导的0x
%f: 默认宽度,默认精度
%9f 宽度9,默认精度
%.2f 默认宽度,精度2 %9.2f 宽度9,精度2 %9.f 宽度9,精度0 - 其它flag
“+” 总是输出数值的正负号;对%q(%+q)会生成全部是ASCII字符的输出(通过转义)
#切换格式"-" 在输出右边填充空白而不是默认的左边(即从默认的右对齐切换为左对齐)
八进制数前加0(%#o),十六进制数前加0x(%#x)或0X(%#X),指针去掉前面的0x(%#p);
对%q(%#q),如果strconv.CanBackquote返回真会输出反引号括起来的未转义字符串;
对%U(%#U),如果字符是可打印的,会在输出Unicode格式、空格、单引号括起来的go字面值;
‘ ‘ 对数值,正数前加空格而负数前加负号;
对字符串采用%x或%X时(% x或% X)会给各打印的字节之间加空格;
0 使用0而不是空格填充,对于数值类型会把填充的0放在正负号后面;
verb会忽略不支持的flag。例如,因为没有十进制切换模式,所以%#d和%d的输出是相同的。
对每一个类似Printf的函数,都有对应的Print型函数,该函数不接受格式字符串,就效果上等价于对每一个参数都是用verb %v。另一个变体Println型函数会在各个操作数的输出之间加空格并在最后换行
1 | package main |
变量的输入
fmt.Scanf()必须要输入正确的格式
1 | package main |
类型转换
golang中不允许隐式转换,所有类型转换必须显式声明,而且转换只能发生在两种相互兼容的类型之间
布尔类型和整型不兼容
1 | package main |
类型别名
type关键字(可以为变量类型更改一个名字)
1 | package main |
运算符
详细使用实例(https://blog.csdn.net/ahaotata/article/details/84316528)
数学运算符
“+” 加
“-“ 减
“*” 乘
“/“ 除
“%” 取模(取余)
“++” 后自增(没有前自增)
“- -“ 后自减(没有前自减)
关系运算符
“==” 判断相等
“!=” 不相等
“<” 小于
“>” 大于
“<=” 小于等于
“>=” 大于等于
逻辑运算符
“!” 非,取反
“&&” 与,同真为真
“||” 或,有一个为真为真
位运算符
“&” 按位与,参与运算的两数各对应的二进位相与(加)
“|” 按位或,参与运算的两数各对应的二进位相或(有1取1)
“^” 异或,参与运算的两数各对应的二进位相异或(两数不同得1)
“<<” 左移,左移n位=乘以2的n次方,左边丢弃,右边补0
“>>” 右移,右移n位=除以2的n次方,右侧丢弃左边补0
赋值运算符
“=” 普通赋值
“+=” 相加后再赋值(a+=1等于a=a+1)
“-=” 相减后再赋值(a-=1等于a=a-1)
“*=” 相乘后再赋值(a*=2等于a=a*2)
“/=” 相除后再赋值(a/=2等于a=a/2)
“%=” 取模后再赋值(a%=2等于a=a%2)
“<<=” 左移后再赋值(a<<=2等于a=a<<2)
“>>=” 右移后再赋值(a>>=2等于a=a>>2)
“&=” 按位与后再赋值(a&=2等于a=a&2)
“^=” 按位与后再赋值(a^=2等于a=a^2)
“|=” 按位或后再赋值(a|=2等于a=a|2)
其他运算符
“&” 取地址运算符(&a=变量a的地址)
“*” 取值运算符(*a=指针变量a所指向内存的值)
使用示例:
1 | package main |
运行结果:
1 | 1>2 false |