Go 开发基础入门——1
请关注我的个人博客
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={<nil>} 那么未初始化的变量默认值为: 整型和浮点型变量: 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互换位置
-
匿名变量
主要用于函数返回值,返回我们需要的字段
数据类型#
- 布尔型
布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 - 数字类型
整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。 - 字符串类型:
字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。 - 派生类型:
包括: (a) 指针类型(Pointer) (b) 数组类型 (c) 结构化类型(struct) (d) Channel 类型 (e) 函数类型 (f) 切片类型 (g) 接口类型(interface) (h) Map 类型
更详细的可以参考这篇博文,写的非常详细
格式化输出语句#
-
通用
%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 的语法和特点,点击这里移步我的个人博客
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: