Go语言语法基础和实战 | 青训营笔记

124 阅读3分钟
   这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天。
   本次青训营后端进阶班的第一节课,我学习了Go语言的语法基础,并且在老师的带领下完成了3个Go语言实战案例。
   虽然我有幸进入了进阶班,但在go语言上我还是入门水平,通过学习今天的两节视频录播课让我受益颇多。
   这里先说一句题外话,进阶班的大佬真的很多,唠嗑群里的985大佬、竞赛大佬、实习经历丰富的大佬...等等,我虽然基础不如他们牢固,但我会在本次青训营一个月的时间中努力提升自我,完善代码能力和计算机综合知识的储备,争取追上这些大佬。
   本堂课程第一节课着重介绍了Go语言的语法,以下是我列举的一些重点和注释。
   1、变量
 var a int   //声明变量时,首先以var开头声明,需要注意的是变量类型要写在变量名的后面,这个和其他许多语言都不太一样,要注意
 var s = "str"  //声明变量也可以不写变量类型,编译器会自动识别,类似Python
 a := 1 //声明变量可以不写var也不写变量类型,用:=可以声明变量并赋值,并且编译器自动识别变量类型
 2、常用关键字
 if a > b{ //要注意的是和c++不同,判断条件没有括号,又和Python不同,执行语句仍是用大括号来包括而不是冒号
     a += 1
 } else if a < b{  //这里else if不能像别的语言一样另起一行写,会报错
     b += 1
 } else{   //同上
     a = 1
 }  
 for i:= 1;i < 5;i++{   //注意 i:=1
     fmt.println(i)
 }
 j := 1
 for{
     j += 1;
 }
 3、输入输出流
 输入输出流用到了fmt标准库
 输出流:fmt.println("hello word!") //输出后换行
        s:= "wolrd"
        fmt.printf("hello %v",s) //%v可以代表任何变量类型
 输入流:fmt.scanf()
         fmt.scanf返回两个变量,第一个是int型变量,是scanf扫描成功的数量,第二个是error,返回报错信息,下面举个例子,让scanf读入一个int型变量
        var input int;
        _, err = fmt.scanf("%d",&input) //前面_是go比较特殊的一点,当我不用这个返回值时可以用_来代替。scanf将输入的值赋值给第二个参数的变量,注意第二个参数要加引用符号
        if err != nil{  //nil就类似其他语言的NULL
            fmt.Println("An error occured while reading input. Please try again.Error is", err
        }
4、数组和切片
    数组
    var a [5]int  //数组声明,注意数组大小要写在变量类型前面
    切片,切片类似Python的list,可以直接append,也能进行切片操作
    s := make([]string,3) //切片声明方法
    s = append(s,"a") //添加元素
    fmt.println(s[:2]) //切片操作
  第二节课介绍了Go项目的实战,通过这三个实战案例,我学到了用Go进行抓包的操作,并且了解了curl转Go代码以及json文件转结构体的网站,这对我以后的编码生涯会有很大的帮助。
  第二节课留了三个作业,目前已完成第一个作业,第二个作业目前遇到了一点问题。我尝试了必应翻译和DeepL翻译,这两个payLoad中的request请求都不如彩云小译来的简洁,目前正在探索解决方法或者换其他的翻译引擎。作业的笔记会在完成后写出。