- 2
- 0
- 约2.07万字
- 约 21页
- 2023-07-08 发布于安徽
- 举报
Golang基本数据类型,常量,数组,切⽚,字符串
整数
int8、int16、int32、int64
uint8、uint16、uint32、uint64
int、uint (不同的编译器即使在相同的硬件平台上可能产⽣不同的⼤⼩)
uintptr ⽆符号的整数类型。指针⼤⼩
优先级递减
* / % ^
+ - | ^
== != = =
||
bit位操作运算符
Printf函数的 %b 参数打印⼆进制格式的数字
位运算 AND
| 位运算 OR
^ 位运算 XOR
^ 位清空 (AND NOT) 先⾮再与
左移
右移
Printf打印
%之后的[1]副词告诉Printf函数再次使⽤第⼀个操作数。
%后的#副词告诉Printf在⽤%o、%x或%X输出时⽣成0、0x或0X前缀。
package main
import fmt
func main() {
o := 0666
fmt.Printf(%d %[1]o %#[1]o \n, o)
x := int64(0xdeadbeef)
fmt.Printf(%d %[1]x %#[1]x %#[1]X \n, x)
}
浮点数
float32和float64
Printf打印
Printf函数的%g参数打印浮点数,将采⽤更紧凑的表⽰形式打印,并提供⾜够的精度,但是对应表格的数据,使⽤%e(带指数)或%f的形
式打印可能更合适
复数
complex64和complex128
var x complex128 = complex(1, 2) // 1+2i
var y complex128 = complex(3, 4) // 3+4i
fmt.Println(x*y) // (-5+10i)
fmt.Println(real(x*y)) // -5
fmt.Println(imag(x*y)) // 10
x := 1 + 2i
y := 3 + 4i
布尔
bool
%t
func main() {
var a bool = false ;
fmt.Println(a)
fmt.Printf(%d, a)
}
布尔值并不会隐式转换为数字值0或1
字符串
底层为[]byte
\uFFFD ⽆效字符
fmt.Println(string(1234567)) // �
package main
import fmt
func main() {
s := hello, world
长度
// len
fmt.Println(len(s)) // 12
fmt.Println(s[0], s[7]) // 104 119
fmt.Printf(%c, %c\n, s[0], s[7])
越界导致 异常
// panic
// c := s[len(s)] // wpanic: runtime error: index out of range
// fmt.Println(c)
⽣成⼀段新的字符⼦字符串操作
// s[i:j]
fmt.Println(s[:5]) // hello
fmt.Println(s[7:]) // world
fmt.Println(s[:]) // hello, world
⽆法单个修改
//
// s[0] = c // cannot assign to s[0]
循环在处理字符串的时候,会⾃动隐式解码 字符串
// range UTF8
for i, r := range Hello, 世界 {
fmt.Printf(%d\t%q\t%d\n, i, r , r)
}
}
byte rune
byte 的操作单位是⼀个字节,可以理解为⼀个英⽂字符
rune 的操作单位是⼀个字符,不管这个字符是什么字符
type rune = uint32
原创力文档

文档评论(0)