今天看书总结了一些go的小知识点java
1.条件判断里面的变量其余地方没法访问程序员
2.使用'_'处理不须要的返回值数据库
3.go能够返回多个返回值数组
4.go不能像java同样抛出异常, go中使用panic 和recover机制cookie
5.go中的struct若是存在匿名的struct字段,那么匿名的struct的全部字段都将被隐士的引入到当前的struct中网络
6.go中经常使用的关键字:session
- var和const语言基础里面的变量和常量申明
- package和import定义所在的包以及导入的包
- func 用于定义函数和方法,若是是方法前面加上结构体
- return 用于从函数返回
- defer 用于相似析构函数,延迟执行
- go 用于并发,goroutine的实现
- select 用于选择不一样类型的通信,阻塞型的
- interface 用于定义接口
- struct 用于定义抽象数据类型
- break、case、continue、for、fallthrough、else、if、switch、goto、default
- chan用于channel通信
- type用于声明自定义类型
- map用于声明map类型数据
- range用于读取slice、map、channel数据
7.go没有提供数据库的驱动,可是提供了开发数据库驱动的标准接口并发
8.网络相关,cookie是存在客户端的请求相关的数据,session是保持在服务端的数据,go建立一个全局的session管理器,经过TcpDial建立一个tcp连接tcp
我以为go中对于java程序员比较难理解的就是struct匿名中匿名变量了,特别是包括函数的interface.goroutine对于java的程序员是一个全新的东西.函数
2019-2-18 更新
【go垃圾回收】
go的垃圾回收机制是根据该变量经过指针或者引用访问路径遍历,是否能够找到该变量。若是不窜中这样的访问路径,那么说明该变量不可达。由于一个变量的有效周期只取决因而否可达,所以一个循环迭代内部的局部变量的生命周期可能超出其局部做用域。同时,局部变量可能只函数返回以后仍然存在。
go中数组定义:在数组字面值中,若是在数组的长度位置出现的是“...”省略号,则表示数组的长度是根据初始化值的个数来计算
【slice】
1.和数组不同的是slice不能进行比较,不能使用“==”判断两个slice是否相等。字节型的slice可使用bytes.Equel进行比较,其余类型只能逐个比较了
2.测试一个slice是否为空,不能使用nil进行判断,须要用len(s) == 0进行判断
【map】
1.map中的key必须支持运算符“==”
2.禁止对map的元素取址,不能取址是由于,随着元素数量的增长,可能会分配更大的内存空间,而致使以前的地址失效
【init过程】
1.在同一个package中,能够多个文件中定义init方法
2.在同一个go文件中,能够重复定义init方法
3.在同一个package中,不一样文件中的init方法的执行顺序按文件名前后顺序决定
4.在同一个文件中的多个init方法,按照在代码中编写顺序执行init方法