走进 Go 语言基础语言| 青训营笔记

50 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

为什么选择Go语言

  • 高性能、高并发
  • 语法简单、学习曲线平缓
  • 丰富的标准库:相比第三方库有更稳定,兼容性,迭代性
  • 完善的工具链:编译、代码格式化、错误检查、帮助文档、包管理、代码补充提示、内置的单元测试框架
  • 静态链接:上线占内存小(c++得加source文件, java得加JRE)
  • 快速编译
  • 跨平台
  • 垃圾回收

Go基础语法

定义变量格式:var name = value / name := value
定义if else : 1.条件语句没有括号. 2.不能写成一行
定义for循环:1.for后面语句没有括号
定义switch循环:1.同样没有括号 2.不用break只会走一条分支3.可以使用任意的变量类型
定义数组: var a [5]int数组长度固定不常用
定义切片,添加元素,复制切片:1. a := make([]int,3) 2.a = a.append(a,1,2) 切片容量不够时会扩容返回新的切片 3.copy(c,a)
定义map,定义值,取值,删除: m := make(map[string]int)或者 m := map[string]int{"a":"A","b":"B"},m["one"] = 1, r,ok := m["one"],delete(m,"one")
- 定义range用法: 数组:nums := []int{2,3,4} for i,num := range nums{} 切片:for k,v := range m{}
基础用法指针:修改传参
定义结构体:type name struct{} 使用.来访问和改值成员变量,可以使用指针减少大结构体复制开销
定义结构体方法: func(structname stucttype) funcname (variablename variabletype){body}func(structname *stucttype) funcname (variablename variabletype){body}
定义错误处理:函数返回值为(name type,err error)如果正常return(value,nil)产生异常根据情况返回return nil,errors.New("not found")取出value, err:= func()
字符串操作:可以查看strings包
字符串打印格式化:fmt.Printf("s = %v\n",s)%v可以查看任意类型的变量,%+v较为详细 ,%#v更为详细,%.2f打印保留小数
json处理:1.确保变量名首字母大写,然后使用json.Marshal(a)转化成buf格式,在通过string强制类型转化既可以变成字符串格式的json 2. 反序列化var b userInfo json.Unmarshal(buf,结构体指针)
时间处理: time包,time.Now(),time.Date,t.Format(),t.Sub(),time.Parse(),now.unix()
数字处理:strconv包
获取进程信息:os.Args os.Getenv环境变量,exec.commond