后端与go|青训营笔记

95 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
今天是我来到字节青训营的的第一天,开始第一节课学习了go语言,对于学过C,C++,JAVA语言,对于go语言还是很好上手的,但也会有很多差别。

1.1 为什么选择go语言

1.高性能,高并发
2.语法简单,学习曲线平缓
3.丰富的标准库
4.完善的工具链
5.静态链接
6.快速编译
7.跨平台
8.垃圾回收

1.2字节跳动为什么全面拥抱了go语言

1.最初使用的Python,由于性能问题换成了go
2.C++不太适合在线Web业务
3.早期团队非Java背景
4.性能比较好
5.部署简单,学习成本低
6.内部RPC和HTTP框架的推广

1.3基础语法

1.声名变量

func main(){
   //Go 语言中变量的声明必须使用空格隔开,声名数据变量如:
   var a int

其与我学过的语言最大的区别就是将数据类型写在后面,并且每一局后面不加分号,这种开始真是不习惯,甚至感觉有点反人类(doge

2.if else 条件语句

func main(){
   //Go 编程语言中 if...else 语句的语法如下:
   ```
   if 布尔表达式 {
  /* 在布尔表达式为 true 时执行 */
}   else {
 /* 在布尔表达式为 false 时执行 */
}

不用加 (),但是每一句必须得加 {}

3.for 循环语句

func main(){
   //Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。
   for init; condition; post { }
   for condition { }
   for { }
   }

4.switch 条件语句

func main(){
  switch var1 {
   case val1:
       ...
   case val2:
       ...
   default:
       ...
}
}

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。

4.数组

var variable_name [SIZE] variable_type

以上为一维数组的定义方式。例如以下定义了数组 balance 长度为 10 类型为 float32:

var balance [10] float32

5.切片(Slice)

声明一个未知大小的数组来定义切片:

var identifier []type

切片不需要说明长度。

或使用 make()  函数来创建切片:

var slice1 []type = make([]type, len)

也可以简写为

slice1 := make([]type, len)

初始化切片 s,是数组 arr 的引用。

s := arr[startIndex:endIndex] 

6.Map

定义map:

/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type

/* 使用 make 函数 */
map_variable := make(map[key_data_type]value_data_type)

以上就是我初学go语言的一些总结,,,明天再见