go语言基础(01)| 青训营笔记

75 阅读2分钟

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

学习了go的语言基础,因为之前接触过多种编程语言,主要关注go与java,C++,shell命令之间的异同,便于快速上手。主要内容如下

  1. Go语言特点
  2. Go语言应用
  3. Go语言语法基础

Go语言特点

  1. 标准化库即实现高性能、高并发。(意味着开发过程中,不用特别的考虑语言效率)
  2. 标准库丰富,不用求助第三方库。
  3. 工具链完善
  4. 静态链接(不需要另外的库和运行平台)和快速编译(1s增量编译,不同于C++和Java重新编译,类似于webstorm中对前端项目的处理
  5. 跨平台,无需配置交叉编译(多平台处理,不需要考虑环境配置
  6. 不需要考虑垃圾回收(类似Java,不用delete,但需要考虑的是,内存过程及触发机制

Go语言应用

公司有字节,腾讯,美团,滴滴,百度,B站

主要领域有云计算和微服务

相比python性能要好,相比其他语言上手简单

Go语言语法基础

开发环境

安装golang(下载后根据教程,go version)

配置goproxy.cn可加快下载第三方包速度

IDE :vscode(安装go插件)/golang

在线编程环境,github账号 gitpod.io 进入仓库

结构与运行

使用package指定包名(类似java),main为入口。使用import{} 引入库, run 运行, build 构建二进制文件

变量声明

 1var name = value 自动推导变量类型,也可 var name (type) = value,字符串为内置类型,可直接用+拼接
 2、name := (type)value
 3、常量即把var改为constconst没有固定的类型,会根据上下文自动确定

流程控制

if else 没有if后的括号,后面必须用大括号

只有for循环,没有括号,其他相同

switch 除不加括号外,支持任意类型。若不写switch什么,可以把条件写在case里,代替if else。不用case里break,默认不往下继续执行。

数组

数组(不能更改长度,很少用)声明方式为var a [5]int

切片 s := make([]string, 3)

s = append(s,"d") 尾端追加,更改长度,自动扩容

copy(s1,s2), s2拷贝到s1

s[2:5]从索引2(第3个)到4,不包括5 支持s[:5]和s[2:],不支持负索引。

len(s)

good := []string{"g","o","o","d"}初始化声明

函数

原生支持返回多个值

通过指针,修改传入参数 (n *int)(&n),基础类型和结构体都如此

结构体函数,同样需要带指针才能对结构体修改

错误处理

通过函数返回多个值的方式,error类型

其他

字符串操作、格式化、json处理

时间处理

strconv字符串解析

进程信息