Go语言入门之基础语法
1.简单语法概述
-
行分隔符:
一行代表一个语句结束,无需写分号。将多个语句写在一行可以用分号分隔,但是不推荐
-
注释:
//
或者/* */
-
标识符:
用来命名
变量
、类型
等程序实体。支持大小写字母、数字、下划线,第一个字符必须是字母或下划线
不支持数字开头,自定义go语言中的关键词和运算符作为标识符
-
字符串连接:
通过
+
号实现 -
空格:
尽量多使用空格保证代码的美观性和可读性
2.关键字与标识符
-
25个关键字或保留字:
-
36个预定义标识符:
3.运算符
(1)算数运算符
就是简单的
+
,-
,*
,/
(2)关系运算符
==
:两边相等则返回true
,否则false!=
:两边不相等则返回true
,否则false>
:左大于右则返回true
,否则false<
:右大于左则返回true
,否则false>=
:右大于等于左则返回true
,否则false<=
:做大于等于右则返回true
,否则false
(3)逻辑运算符
&&
:AND运算,两边都是true
则为true
否则为false
||
:OR运算,两边只要有一个true
则为true
否则为false
!
: NOT运算,取反,条件为true
则为
(4)位运算符
&
,按位与,二进制都为1则为1,否则为0|
,按位或,二进制位有一个为 1 则为 1 否则为 0^
,按位异或,二进制位不一样就为 1 否则为 0<<
,左移,左移 n 为就是乘以 2 的 n 次方>>
,右移,右移n位就是除以2的n次方
4.格式化字符串
Go语言中使用
fmt.Sprintf
或fmt.Printf
格式化字符串并赋值给新串
Sprintf
:根据格式化参数生成格式化的字符串并返回该字符串。Printf
:根据格式化参数生成格式化的字符串并写入标准输出。
区别实例:
go
var age = 17
var name = "go"
var url = "名字是%s&年龄是%d"
var target_url = fmt.Sprintf(url,name,age) // 生成一个新的字符串
fmt.Println(target_url) // 输出新串
fmt.Printf(url,name,age) // 直接输出
5.常见的转义字符
go
\n: // 换行符
\r: // 回车符
\t: // tab 键
\u: // Unicode 字符
\U: // Unicode 字符
\\: // 反斜杠自身
``: // 内容原样输出
6.变化多端的占位符
(1)普通占位符
go
%v // 相应值的默认格式
%+v // 打印结构体时会添加字段名
%#v // 打印结构体时会添加字段名和结构体名
%T // 打印出该数据的数据类型
%% // 打印出一个百分号
(2)布尔占位符
go
%t // 布尔占位符,只能打印true和false
(3)整型占位符
go
%d // 十进制输出
%5d // 设置宽度,效果类似于空格,前空5格为5d,后空为-5d,空换位0为05d
// 例子
fmt.Printf("|%5d|%-5d|%05d|", 1, 1, 1) // 输入
| 1|1 |00001| // 输出
%b // 二进制输出
%o // 八进制输出 %#o输出的是以0开头的
%x // 十六进制输出,字母形式为小写 a-f %#x输出以0x开头
%X // 十六进制输出,字母形式为大写 A-F %#X输出以0X开头
(4)浮点型占位符
go
%b // 浮点数转化为 2 的幂的科学计数法 输入 1.23,输出 5539427541665710p-52
%e // 科学计数法 输入1.23 输出 1.230000e+00
%E // 科学计数法 输入1.23 输出 1.230000E+00
%f // 浮点数输出(保留6位) 输入1.23 输出 1.230000
%.1f // 保留1位小数四舍五入 输入1.234 输出 1.2
%8f // 保留8个数 输入1.123456789 输出 1.123457
%4.3f // 3精度,保留5个数 输入12.12345 输出 12.123
%5.2f // 2精度,保留4个数 输入12.1234 输出 12.12
%5.2f // 2精度,保留6个数 输入1234.1234 输出 1234.12
%g // 去掉小数后面的0 输入 12.1200 输出 12.12
%.3g // 保留3位数后去小数后0 输入 12.1200 输出 12.12
%.5g // 保留5位数后去小数后0 输入 12.300 输出 12.3
%G // 官网说和g有区别,但是测试结果相同,应该适用于特殊情况浮点型占位符
(5)字符占位符
go
%c // 相应Unicode码点所表示的字符
%q // 输出有单引号的相应Unicode码点所表示的字符
%U // 输出格式为 U+hhhh 的字符串 %#U时多加了一个对应的字符 例:U+7583 '疃'
(6)字符串与字节切片
go
%s // 输出字符串表示(string类型或[]byte)
// 截断字符串
fmt.Printf("%.3s", "abcde")
// 输出
abc
%q // 安全转义,和上面的一样,就多了个双引号
// 例子输入
fmt.Printf("%s %q \n", "你", []byte("好"))
// 输出
你 "好"
%x // 转化为十六进制输出,小写字母
%X // 转化为十六进制输出,大写字母
(7) 指针占位符
go
%p // 十六进制表示,%p 带 0x, %#p 不带
// 输入
a := 1
b := []int{1, 2}
fmt.Printf("%p|%#p", &a, b)
// 输出
0xc00000a0c8|c00000a100
(8) 其他占位符
go
+ //打印数值的正负号,默认输出 ASCII 编码字符,非 ASCII 编码会转成 Unicode 编码输出
// 输入
fmt.Printf("%+d|%+q", -1, "你好")
// 输出
-1|"\u4f60\u597d"
- // 会在右侧填充空格,上面已展示过
# // 上面用过很多次,%#q 可以打印出反引号包裹的字符串
空格 // 输出时可以留出空位 5d%等于5个空格加d
占位符不用全看,看几个重要的就行,按需取用,都是来自网上整理,如有问题请留言。