Go语言的青训营第一篇之GO语言入门指南(上)| 青训营

84 阅读4分钟

什么是Go语言?

go语言是谷歌出品的一种通用性计算机编程语言

Go的特点

  1. 高性能,高并发:在性能方面,足以和c/c++的老牌语言媲美的性能,还有对高变化的支持,不想其他语言一样需要各种库的支持。通过轻量级的线程来实现高并发,能更高效的处理并发任务。
  2. 语法简单,学习曲线平缓:语法简单易懂,类似C语言,并在此基础上进行了大幅度的简化,非常容易上手,学习曲线平缓,学期周期也短,一个熟练的开发者一周就能从学习到实践开发。
  3. 丰富的标准库:Go语言与Python一样,有非常强大丰富且靠谱的标准库,含有各种常用功能的模块,能大幅度降低学习和使用成本。最关键的是还有很高的稳定性与兼容性保障。
  4. 完善的工具链:Go语言有一条非常完善的工具链,包括编译,代码格式化,错误检查,代码补充提示等等工具,还有完整的单元测试框架,能进行单元测试,性能测试,代码覆盖率,性能优化等等,能帮助开发者提升工作效率。
  5. 静态链接:Go语言的编译依赖最后的可执行文件,非常方便快捷。
  6. 快速编译:在静态语言中,Go语言拥有几乎最快的编译速度。
  7. 跨平台:Go语言可以在多种操作系统中进行开发,还具有交叉编译功能,使得Go语言非常适合跨平台开发。
  8. 垃圾回收:Go语言自带垃圾回收功能,使得开发者无须关系内存分配,减轻开发者的使用负担。

Go语言的入门

配置开发环境

  1. vs vode,免费下载,安装Go扩展插件,即可使用
  2. Goland,专门为go语言开发的的编辑器,但需付费

Go语言的基础语法

  1. 认识世界,Hello World!

     package main
     ​
     import ("fmt")
         
     func main()  {
         fmt.Println("Hello Woeld!")
     }
    

    /fmt中含有输入输出函数

  2. 变量与常量

     package main
     ​
     import(
         "fmt"
         "math"
     )
     func main(){
         var a = "initial"
         var b , c int = 1,2
         var d = true
         var e float64
         f := float32(e)
         g := a+"foo"
         fmt.Println(a,b,c,d,e,f)//initial 1 2 true 0 0
         fmt.Println(g)//initialfoo
     ​
         const s string = "constant"
         const h =  50000000
         const i =  3e30/h
         fmt.Println(s,h,i,math.Sin(h),math.Sin(i))
         //constant 50000000 6e+22 0.8256467432733234 0.16141170821152984
     }
    

    变量的定义有两种方式,var 或者 := ,一般系统都可以自动识别类型,如果想写,比如上面代码第九行,也可以,不算错误,常量也是同理。

    常量的定义在前面加const,在go中常量没有确定的类型,会根据上下文自动确定类型。

  3. if..else..语句

     package main
     ​
     import "fmt"
     ​
     func main() {
     ​
         if 7%2 == 0 {
             fmt.Println("7 is even")
         } else {
             fmt.Println("7 is odd")
         }
     ​
         if 8%2 == 0 {
             fmt.Println("8 is divisable by 4")
         }
     ​
         if num := 9; num < 0 {
             fmt.Println(num, "is negative")
         } else if num < 10 {
             fmt.Println(num, "has 1 dight")
         } else {
             fmt.Println(num, "has multiple digits")
         }
     ​
     }
     ​
    

    go和C/C++的if..else..循环的区别

    • if后面的判断条件go语言不要小括号,但是C/C++必须要小括号。
    • go语言中,if+判断条件 后面必须要有大括号,不能省,但是C/C++中可以省略。
  4. for循环

     package main
     ​
     import "fmt"
     ​
     func main() {
         for {
             fmt.Println("死循环!")
             break
         }
     ​
         for j := 7; j < 9; j++ {
             fmt.Println(j)
         }
     ​
         for n := 0; n < 5; n++ {
             if n%2 == 0 {
                 continue
             }
             fmt.Println(n)
         }
     }
     ​
    

    go语言中的循环没有do..while../while..循环,只有for循环。

    其中for循环的判断条件,不用小括号

  5. switch循环

     package main
     ​
     import (
         "fmt"
         "time"
     )
     ​
     func main() {
         a := 2
         switch a {
         case 1:
             fmt.Println("one")
         case 2:
             fmt.Println("two")
         case 3:
             fmt.Println("three")
         case 4:
             fmt.Println("four")
         default:
             fmt.Println("other")
         }
     ​
         t := time.Now()
         switch {
         case t.Hour() < 12:
             fmt.Println("It's before noon")
         default:
             fmt.Println("It's after noon")
         }
     }
    

    go语言里的switch功能更加强大,而且默认执行一次,不再需要break跳出循环。

    与其他语言相比,go中的Switch更加强大,可以使用任意的变量类型(第十行),比如字符串,结构体,甚至有的可以代替if。else。循环语句

小结

第一次小结,在第一课中开始了解了Go语言的一些性能,这些大部分都是Go语言的一些优势,这也是选择Go的原因,我也详细记录了下来,下面是一些最基础的go语言的基础语法,但是因为字数原因,是写了一些,后面的语法就是有些难度的了,留到下一章再说吧