You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
2.6 KiB
45 lines
2.6 KiB
%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 等),不能作为标识符;
|
|
算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符
|