GoLang
one
1、运行时go run 或者go build生成二进制文件(编译)然后直接运行二进制文件
2、package定义当前程序的包名,每个文件必须有一个main。运行时会先执行main文件(有init()就先执行init)
3、导入其他的包也是import
import 项目名/包名4、标示符首字母大写的时候就可以被外部的代码使用,小写则不行。
5、’{‘不能单独的放在一行‘}’可以
下面列举了 Go 代码中会使用到的 25 个关键字或保留字:
break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var
除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符:
append bool cap byte close complex complex64 complex128 uint16 copy false float64 float32 imag int int8 int16 uint32 int32 int64 len iota make new nil panic uint64 print println recover real string true uint uint8 uintptr
6、定义常量 const name = 3.14
全局变量:var name = “gopher”
一般类型:type gopher int/struct{}(结构体)/interface{}(接口)
two
1、定义变量一般用var,可以一次声明多个变量,不初始化则变量默认为0
2、函数内可以直接 := 形式声明变量
3、go和python一样可以自动识别变量类型
4、const定义的为不可变的常量(可以枚举)
5、iota为const枚举时的自增属性,从0开始。(只为第一个参数赋值就可以,为其他参数赋值其他类型,也算在计数范围内)
6、3<<1 以2进制形式左移一位,iota会根据前几位自动排序。
three
1、go中的str和mysql类似都由‘数据’,‘长度’两部分组成。在go中使用unsafe.Sizeof可以查看占用的空间为16,每部分为1个域,1个域的长度为8.
2、使用const枚举时如果直接赋值不使用iota,接下来的数也没有赋值,则统一使用第一个数的赋值作为使用时的值。
运算符:
1、直接使用:+,-,*,/,%,++,–
2、==判断相等、!=、>、<=、结果都为ture|false
3、与&&、或||、非!
4、对整数操作的位运算符(针对二进制,例如60为0011 1100)
与&、或|、异或^、逻辑左移<<、右移5、赋值运算符: = 、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=
6、取地址&、指针变量(*a)
four
1、if bool {}({必须不独立,}必须独立一行)
2、fmt.Scan(&变量),用来输入
3、使用if的同时可以声明一个变量(只在改逻辑块使用)
例子:if num:=9;num>0{}else if 条件{}else{}4、for 参数;条件;自增{}
5、switch语句 :
switch 变量(可不写){ case 判断是否与函数头的变量一致:一致就执行否则继续向下 case 判断:执行}6、判断类型 变量.(type)
7、使用fallthrough会强制执行紧跟着的一条case不论是否成立。case支持多条件匹配:case 1,2,3,4。break会终止case的执行
8、select{} 内部也是case判断,条件必须为一个通信操作,发送或者接受,没有符合条件的就执行默认语句default或者阻塞(一直循环检测)。
five
1、for循环分三种形式:
for 定义变量;循环条件;自增自减{}for 循环条件{}(雷士while循环的使用)for 变量 := range 数组{} (可以取出数组的元素和下标)2、break;终止当前循环。continue;跳出本次循环。
3、goto 跳出本次循环,执行指定的行:
label 1+1;goto label4、swap交换函数,可以交换变量的值。sqrt开方。
5、声明函数类型:type cb func(int)int
6、闭包func 函数名(参数) func(参数)(返回值的类型){}
7、定义结构体
type 结构体名称 struct{ 变量 类型}8、go和C语言一样是没有面向对象只能靠结构体的方法实现。
9、定义数组时如果是key:value的形式定义的,那么key就是数组的下标。
10、指针数组 名字 【】*type ;赋值:名字【i】 = &数据的地址
six
1、结构体设置变量: 定义的变量名:=结构体名字{给结构体的参数赋值key:value形式}
2、访问结构体成员使用 ‘ 定义的结构体变量名.属性 ’ 的形式。结构体可以传参,通过指针可以改变结构体内部的参数