Golang基础知识笔记 | 青训营笔记

53 阅读2分钟

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

Day-1

因为很早之前就关注到了golang这门语言和了解了字节的青训营,但直到今天才有机会可以参与进去。 因为前几天事情有一些多,所以没有写笔记,现在开始把学习过的东西,进行一些总结。

Go语言的特点

    1. 高性能高并发
    1. 语法简单
    1. 丰富的标准库
    1. 完善的工具链
    1. 静态链接、快速编译
    1. 可以跨平台
    1. 垃圾回收

举一个简单的例子,简单的两句代码就可以启动一个web服务。

package main  
  
import (  
 "net/http"  
)  
  
func main() {  
 http.Handle("/", http.FileServer(http.Dir(".")))  
 http.ListenAndServe("localhost:8080"nil)  
}

image.png 通过简单的几行代码便可以启动一个http服务,用来访问本地的文件夹

Go语法的特点

主要将Golang语法和C++语法进行了一些对比

    1. 每一行语句的结尾不再强行要求加上分号
fmt.Println("hello world") //末尾不建议加;
    1. 一对大括号的 if/for 等语句体只有一行时也必须使用一对大括号包裹起来
//错误的语法
func DoTest()
{

}

//正确的语法
func DoTest() {

}
    1. if/for 等条件不再需要扩号
//正确的语法
if (success) {
   printf("success")
}

//错误的语法
if (success)
   printf("success")
    1. 只有for循环,不再支持while和do-while 循环
//正确的语法
for i := 1; i < 10; i++ {
    fmt.Println(i)
}

//错误的语法,for语句不需要括号
for (i := 1; i < 10; i++) {
   fmt.Println(i)
}
    1. 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:
}
    1. 自增自减运算符只支持后缀形式,不支持前缀形式
i := 0
i++ //可以编译通过
++i //无法通过编译
    1. 不支持条件运算符
b := 9
a := (b > 0 ? true : false) //这一行无法通过编译
    1. 给一个结构体多个字段设置值的时候,最后一个字段也必须以逗号结束
type StandardResp struct {
    Code  int32
    Msg   string
    Data  interface{}
}

c.JSON(http.StatusOK, commonHttp.StandardResp{
      Code: 1000,
      Msg:  "token error",
      Data: nil, //注意这里nil之后有一个逗号,这在其他语法中必须没有逗号
  })