这是我参与「第五届青训营 」笔记创作活动的第1天
Day-1
因为很早之前就关注到了golang这门语言和了解了字节的青训营,但直到今天才有机会可以参与进去。 因为前几天事情有一些多,所以没有写笔记,现在开始把学习过的东西,进行一些总结。
Go语言的特点
-
- 高性能高并发
-
- 语法简单
-
- 丰富的标准库
-
- 完善的工具链
-
- 静态链接、快速编译
-
- 可以跨平台
-
- 垃圾回收
举一个简单的例子,简单的两句代码就可以启动一个web服务。
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir(".")))
http.ListenAndServe("localhost:8080", nil)
}
通过简单的几行代码便可以启动一个http服务,用来访问本地的文件夹
Go语法的特点
主要将Golang语法和C++语法进行了一些对比
-
- 每一行语句的结尾不再强行要求加上分号
fmt.Println("hello world") //末尾不建议加;
-
- 一对大括号的 if/for 等语句体只有一行时也必须使用一对大括号包裹起来
//错误的语法
func DoTest()
{
}
//正确的语法
func DoTest() {
}
-
- if/for 等条件不再需要扩号
//正确的语法
if (success) {
printf("success")
}
//错误的语法
if (success)
printf("success")
-
- 只有for循环,不再支持while和do-while 循环
//正确的语法
for i := 1; i < 10; i++ {
fmt.Println(i)
}
//错误的语法,for语句不需要括号
for (i := 1; i < 10; i++) {
fmt.Println(i)
}
-
- switch-case语句默认加了break语句
switch i {
case 0:
fmt.Println(0)
case 1:
fmt.Println(1)
case 2:
fmt.Println(2)
default:
}
//相当于
switch i {
case 0:
fmt.Println(0)
break
case 1:
fmt.Println(1)
break
case 2:
fmt.Println(2)
break
default:
}
-
- 自增自减运算符只支持后缀形式,不支持前缀形式
i := 0
i++ //可以编译通过
++i //无法通过编译
-
- 不支持条件运算符
b := 9
a := (b > 0 ? true : false) //这一行无法通过编译
-
- 给一个结构体多个字段设置值的时候,最后一个字段也必须以逗号结束
type StandardResp struct {
Code int32
Msg string
Data interface{}
}
c.JSON(http.StatusOK, commonHttp.StandardResp{
Code: 1000,
Msg: "token error",
Data: nil, //注意这里nil之后有一个逗号,这在其他语法中必须没有逗号
})