-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStudyNote
175 lines (117 loc) · 3.39 KB
/
StudyNote
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
转义字符 escape char
\t
\n
\\
\"
\r
快捷键 ctrl+/ 多行注释
规范:
尽量用行注释,多看源码
缩进以及空白
运算符附近有空格
“{”不能单独起行
golang官方编程指南,有空看下
变量声明:
1. var i int
2. var i =10
3. i := "123"
数据类型
1.基本型:
a.数值型 int, int32, uint...
b.字符型 byte = uint8
c.布尔型
d.字符串 由字符组成
2.派生
a.指针
b.数组
c.结构体 struct (类似class)
d.管道 channel
e.函数
f.切片 slice
g.接口 interface
h.map 集合
var n = 100
fmt.Printf("%T",n) : 用于做格式化输出
UTF-8编码
字母一个bit,汉字3个bit
字符串大段输出用反引号``
数据转化为显式转换
var n int = 42
var i float32 = float32(n)
基本数据转string
1.fmt.Sprintf
2.strconv
----
指针
值类型包括哪些?
基本数据类型:int, float, bool, string, 数组和结构体struct
引用类型:指针,切片,map,管道和接口
值类型:变量直接存储值,内存通常在栈中分配
引用类型:通常在堆区分配
代码规范:
首字母小写不能被其他包访问,首字母大写能被其他包访问
保持包名字和文件名一致
运算注意:
++ & --
1.只能独立运行,不能与=一起用
2.只有后++,没有前++
关系运算符
逻辑运算符: && || !
&& 第一个条件为false,第二个就不判断了,输出false
|| 第一个条件为true,第二个就不判断了,输出true
赋值运算符
=
*= : c*=A, c = c * A
+=
-=
位运算符
& 两个全为1,则为1
| 两个有一个为1,则为1
<< 符号位不变
>> 低位溢出,符号位不变,并用符号位补溢出的高位
^ 两个一个为1一个为0,则为1
二进制 1 byte
+1 为 00000001,第一位为符号位,所以1 byte的范围是-127,+127
愿码,反码,补码
正数的原码,反码和补码都一样
负数的反码除符号位不变,其余取反
负数的补码除符号位不变,其余取反,再+1
----
流程控制
if else
switch: fallthrough (switch穿透)
二/八/十六进制转十进制
反过来
for
遍历字符串
1.传统--若遍历中文会有错,一个汉字在编码时对应3个字节;解决方案:用切片“[]rune”
2.for-range
var str string = "akdfj"
for index, val = range str{
}
break/continue,如果用于多重循环,可以用标签!!!
goto 一般不推荐使用
函数:如果要被外部调用,首字母一定要大写,类似public;首字小写类似private
import(
utl "....."
)//取别名
递归调用,函数里面调用自身。不断地在栈区创建自己,非常占用资源
通过指针可以更改函数外面的传进来的值,保持同步。
go不支持函数重载,以另外形式实现(后续)
函数也是一种数据类型,可以赋值
函数可以作为形参,并且调用
自定义数据类型名,用type,常用于func: type myint int (可以放在func外面)
project12
支持对函数返回值命名:
func cal(n1 int, n2 int)(sum int, sub int){
sum = n1 + n2
sub = n1 - n2
return
}
支持可变参数, args, args是slice
project13
init函数,类似python,每个源函数都可以有init,在main之前执行
比init还要优先的是全局变量定义
匿名函数: 暂时还不知这个作用
闭包是一个函数和与其相关的引用环境的一个整体(实体)
project15