Golang Day02
-
格式化说明
-
%d
格式化整数 -
%x
和%X
格式化16进制数var c int16 = 10 fmt.Printf("c=%x,c=%X", c, c)
-
%g
格式化浮点数%f
输出浮点数%e
输出科学计数法func main() { var f = 12345.67891 fmt.Printf("f=%g,f=%f,f=%e", f, f, f) } // f=12345.67891,f=12345.678910,f=1.234568e+04
-
%0nd
用于规定输出长度为 n 的整数长度超过不处理,长度不够就在左边加0
其中
d
可选,使用b
等也可行func main() { var a = 99999 fmt.Printf("a=%03d,a=%08d", a, a) } // a=99999,a=00099999
-
%b
格式化输出位标识符func test() { var a = 8 fmt.Printf("a=%b", a) } // a=1000
-
-
位运算
-
按位与
&
func test2() { var a1 = 1 & 1 var a2 = 1 & 0 var a3 = 0 & 0 var a4 = 26 & 11 fmt.Printf("a1=%d,a2=%d,a3=%d,a4=%d", a1, a2, a3, a4) } // a1=1,a2=0,a3=0,a4=10
-
按位或
|
func test3() { var b1 = 1 | 1 var b2 = 1 | 0 var b3 = 0 | 0 var b4 = 26 | 10 fmt.Printf("b1=%d,b2=%d,b3=%d,b4=%d", b1, b2, b3, b4) } // b1=1,b2=1,b3=0,b4=26
-
按位异或
^
func test4() { var a1 = 1 ^ 1 var a2 = 1 ^ 0 var a3 = 0 ^ 0 var a4 = 26 ^ 11 fmt.Printf("a1=%d,a2=%d,a3=%d,a4=%d", a1, a2, a3, a4) } // a1=0,a2=1,a3=0,a4=17
-
位清除
&^
// a1=0,a2=1,a3=0,a4=0,a5=20 func test5() { var a1 = 1 &^ 1 var a2 = 1 &^ 0 var a3 = 0 &^ 1 var a4 = 0 &^ 0 var a5 = 30 &^ 11 fmt.Printf("a1=%d,a2=%d,a3=%d,a4=%d,a5=%d", a1, a2, a3, a4, a5) }
-
按位补足
^
该运算符与异或运算符一同使用,即
m^x
,对于无符号x
使用 “全部位设置为 1” 的规则,对于有符号x
时使用m=-1
正数中,数值相等的有符号和无符号相减的绝对值等于无符号最大值+1
// a=245,b=-11,c=65525,d=-11 func test6() { var a uint8 = 10 var b int8 = 10 var c uint16 = 10 var d int16 = 10 fmt.Printf("a=%d,b=%d,c=%d,d=%d", ^a, ^b, ^c, ^d) }
参考地址:go中异或运算带来的疑惑
-
位左移
<<
// a<<2=40,b<<3=56 func test7() { var a = 10 var b = 7 fmt.Printf("a<<2=%d,b<<3=%d", a<<2, b<<3) }
-
位右移
>>
// a>>2=3,a>>3=1 func test8() { var a = 15 fmt.Printf("a>>2=%d,a>>3=%d", a>>2, a>>3) }
-
-
运算符
带有
++
和--
的只能作为语句,而非表达式,因此n = i++
这种写法是无效的,其它像f(i++)
或者a[i]=b[i++]
这些可以用于 C、C++ 和 Java 中的写法在 Go 中也是不允许的。func test9() { var index=0 var arr[10] int arr[0]=0 index++ var a=index++ arr[index++]=1 fmt.Printf("a=%d,index=%d,arr[0]=%d",a,index,arr[0]) }
会发生报错
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。