Go语言: 1.高性能,高并发 2.语法简单,一周上手 3.丰富标准库 4.完善的工具链 5.静态链接 6.快速编译 7.跨平台 8.垃圾回收 相对于其他语言,在结尾不需要添加分号,小括号出现少,引用库不需要重复很多import,null变为nil
package 包名 import { “标准库名字” “......” }
func main(){ 主程序 }
变量定义(支持“=”比较字符串) import “math” var 变量名 = 值 (会自己选择对应变量类型) var 变量名 变量类型 = 值 (var b int = 1) 变量名 := 值
常量(根据上下文自动确定类型): const 变量名 (变量类型) = 值
if-else: if后面不用加括号,加了会自动去掉,一定要跟大括号
if 条件 { }else{}
for循环:(只有这种循环) for ; ; {}
switch(不需要加break,跑到就跳):
switch 变量名 {
case (不只是数据,字符串也支持):_________
case :_________
default:___________
}
数组: var 变量名 [个数]变量类型
len(变量名) 数组个数
切片:
变量名 := make([]变量类型,长度)
变量名 = append(变量名,内容) 添加内容到指定切片
copy(变量名,变量名) 复制切片
变量名[上端:下端] 取出切片(从0开始,不包括下端)
map(和java一样):
变量名 := make(map[key变量类型]value变量类型)
delete(变量名,对应key值) 删除
range(快速遍历)(相当于java的foreach循环,只是会多返回所在位置):
for 变量名(一般两个,可以只有一个) := range 需要遍历的变量名{}
函数(和java差不多,只是变量类型在变量名后面):
func 函数名(变量名 变量类型,----)(返回值名 返回值类型,----(只有一个可以省略括号)){}
指针(一般在函数内,作为对传入参数的修改):
func 函数名(变量名 变量类型){运算时变量名前加}
func main(){ 函数名(&变量名) }
结构体: type 名字 struct{ 变量名 变量类型 ------- } 初始化:
- 变量名 := 结构体名{变量名:值, }(可只赋值一部分)
- 变量名 := 结构体名{值, }
- 变量名.结构体内变量名 = 值
json处理:结构体变量名首字母均为大写时 可用jsen.Marshal(已经定义的结构体名)对其序列化 可通过转化为string类型打印出结构体中变量的名称,不转换则为16进制的编码 若想输出小写的可在结构体定义时在同行追加“json:想要的名字”
结构体方法:类似于创造java中的封装函数
func (变量名 结构体名(可选择带不带指针)) 函数名(变量名 变量类型,----)(返回值名 返回值类型,----(只有一个可以省略括号)){}
错误处理: 在返回时增加一个error类型的变量,通过判断此变量是否为nil来判断是否产生错误。由此可以清楚知道错误位置 同时在处理数据时应先判断error类,否则可能会产生空指针
时间处理(与java类似): import{“time”}
设置时间格式为t.Format(“2006-01-02 15-04-05”)与其他完全不同