作者:集束群 | 来源:互联网 | 2023-08-07 15:18
请关注我的个人博客Go开发入门变量的定义,赋值变量声明:Go的变量名首字母不能为数字未初始化的变量声明:var变量名变量类型varaint声明int类型的变量varb
请关注我的个人博客
Go开发入门
变量的定义,赋值
变量声明:Go的变量名首字母不能为数字
未初始化的变量声明:
var 变量名 变量类型
var a int // 声明 int 类型的变量
var b [10] int // 声明 int 类型数组
var c []int // 声明 int 类型的切片 [] 内赋初值是数组,不赋值是切片
var d *int // 声明 int 类型的指针
打印结果为
//a={0},b={[0 0 0 0 0 0 0 0 0 0]},c={[]},d={}
那么未初始化的变量默认值为:
整型和浮点型变量: 0
字符串: 0
布尔: false
函数,指针: nil
初始化的变量声明:
var 变量名 变量类型 = 表达式
var a int = 10
//编译器自动推断格式
var 变量名 = 表达式
//简短声明格式(短变量声明格式)
变量名 := 表达式
:= 可以高效的创建新变量,在内存中开辟空间
var 省略
编译器自动推断类型
声明变量首选这种形式
只能用在函数体内,不能作为全局变量来声明
变量名不能是被定义过的,不然会报错
- 变量多重赋值
go可以进行多变量赋值,变量与变量之间逗号隔开
a, b, c, d := 1, 2, true, "def"
fmt.Printf("a={%d},b={%d},c={%v},d={%v} \n", a, b, c, d)
a, b = b, a // a,b互换位置
数据类型
更详细的可以参考这篇博文,写的非常详细
格式化输出语句
通用
%v value,值的默认表示
%+v 类似%v,但输出结构体时会添加字段名
%#v 值的 Go 语法表示
%T 值的数据类型Go语法表示,如: int , string等
布尔
%t true或false
整数
%b 二进制表示
%c 相应Unicode码点所表示的字符
%d 十进制表示
%8d 整形长度为8,不足8则在数值前补空格 超出以实际为准
%08d 数字长度是8,不足8位的,数字前补0 超出以实际为准
%o 八进制表示
%q 单引号围绕的字符字面值,由Go语法安全地转义
%x 十六进制表示,字母形式为小写 a-f
%X 十六进制表示,字母形式为大写 A-F
%U Unicode格式:U+1234,等同于 "U+%04X"
浮点,复数
%b 无小数部分的,指数为二的幂的科学计数法,与 strconv.FormatFloat中的 'b' 转换格式一致。例如 -123456p-78
%e 科学计数法,例如 -1234.456e+78
%E 科学计数法,例如 -1234.456E+78
%f 有小数点而无指数,例如 123.456
%g 根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出
%G 根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出
字符串和bytes的slice表示:
%q 双引号围绕的字符串,由Go语法安全地转义
%x 十六进制,小写字母,每字节两个字符
%X 十六进制,大写字母,每字节两个字符
指针:
%p 十六进制表示,前缀 0x
这里没有 'u' 标记。若整数为无符号类型,他们就会被打印成无符号的。类似地,这里也不需要指定操作数的大小(int8,int64)。
对于%v来说默认的格式是:
bool: %t
int, int8 etc.: %d
uint, uint8 etc.: %d, %x if printed with %#v
float32, complex64, etc: %g
string: %s
chan: %p
pointer: %p
由此可以看出,默认的输出格式可以使用%v进行指定,除非输出其他与默认不同的格式,否则都可以使用%v进行替代(但是不推荐使用)
对于复合对象:
里面的元素使用如下规则进行打印:
struct: {field0 field1 ...}
array, slice: [elem0 elem1 ...]
maps: map[key1:value1 key2:value2]
pointer to above: &{}, &[], &map[]
宽度和精度:
宽度是在%之后的值,如果没有指定,则使用该值的默认值,精度是跟在宽度之后的值,如果没有指定,也是使用要打印的值的默认精度.例如:%9.2f,宽度9,精度2
%f: default width, default precision
%9f width 9, default precision
%.2f default width, precision 2
%9.2f width 9, precision 2
%9.f width 9, precision 0
这里有一些练习
弟弟从事java开发,学习go纯属个人爱好,喜欢go的语法和特点,点击这里移步我的个人博客