|
|
|
@ -1 +1,45 @@ |
|
|
|
111 |
|
|
|
%v 通用占位符(打印任意类型,默认格式) |
|
|
|
%+v 打印结构体时,显示字段名 + 值 |
|
|
|
fmt.Printf("%+v", User{"小明"}) {Name:小明} |
|
|
|
%#v 打印值的 Go 语法表示(含类型) |
|
|
|
%T 打印值的类型 fmt.Printf("类型:%T", 3.14) |
|
|
|
%% 打印百分号本身(转义) |
|
|
|
%d 十进制整数(int/int64 等) fmt.Printf("数字:%d", 100) 数字:100 |
|
|
|
%b 二进制整数 fmt.Printf("二进制:%b", 8) 二进制:1000 |
|
|
|
%o 八进制整数 fmt.Printf("八进制:%o", 8) 八进制:10 |
|
|
|
%x/%X 十六进制(小写 / 大写) |
|
|
|
%f 浮点数(默认保留 6 位小数) |
|
|
|
%.2f 浮点数(指定保留 2 位小数) |
|
|
|
%e/%E 科学计数法(小写 / 大写) |
|
|
|
%U Unicode 编码(如字符转编码) |
|
|
|
%s 字符串(直接打印) |
|
|
|
%q 字符串带双引号(转义) |
|
|
|
%c 单个字符(按 Unicode 打印) |
|
|
|
%p 指针地址(十六进制,带 0x)fmt.Printf("指针:%p", &a) |
|
|
|
%5d 宽度 5,右对齐(不足补空格) |
|
|
|
%-5d 宽度 5,左对齐(不足补空格) |
|
|
|
%05d 宽度 5,不足补 0 fmt.Printf("%05d", 123) |
|
|
|
%5.2f 总宽度 5,保留 2 位小数(右对齐) |
|
|
|
GO的字符串是不可变的,go的数据都有一个默认值没有赋值时Go中不同类型的变量之间赋值时需要显示转换,变量本身没有发生变化基本数据类型转换成string |
|
|
|
GO的指针 |
|
|
|
核心语法:& 取地址、* 解引用(定义指针 / 访问值); |
|
|
|
核心优势:函数传参时修改外部变量、节省内存(大数据传递); |
|
|
|
Go 特色:无指针算术、自动 GC、结构体指针可直接用.访问字段(语法糖); |
|
|
|
避坑点:空指针(nil)解引用会崩溃,需先判空。 |
|
|
|
1. 值类型 |
|
|
|
所有基础数据类型 + 结构体 + 数组,都是值类型: |
|
|
|
基础类型:int/float/bool/string/byte/rune |
|
|
|
复合类型:struct(结构体)、array(数组,如 [5]int) |
|
|
|
特殊值类型:int8/int16/uint64 等固定长度数值类型 |
|
|
|
2. 引用类型 |
|
|
|
只有 3 类核心引用类型(底层封装了指针,Go 帮你简化了指针操作): |
|
|
|
slice(切片,如 []int) |
|
|
|
map(字典) |
|
|
|
chan(通道) |
|
|
|
一、标识符的基础规则(语法层面,必须遵守) |
|
|
|
这是 Go 编译器强制要求的,违反会直接报错: |
|
|
|
字符组成:只能由 字母(a-z/A-Z)、数字(0-9)、下划线(_) 组成; |
|
|
|
开头规则:不能以数字开头(如 1score 错误,score1 正确); |
|
|
|
大小写敏感:Score 和 score 是两个完全不同的标识符; |
|
|
|
不能用关键字:Go 有 25 个关键字(如 if/else/for/struct/var 等),不能作为标识符; |
|
|
|
算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符 |