GO语言基础及实战案例|青训营笔记

56 阅读3分钟

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

第一天的课程的第一部分为GO语言基础,包括特点、安装配置、基础语法、函数与数据结构。此笔记只记录对于本人来说比较特别的地方以及和其他语言不太一样的地方。

一、Go 语言基础

(一)Go语言的特点

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

(二)HELLO WORLD!永远滴神

image.png

package main 这段代表这个文件属于哪个表,这里表示属于 main 包的一部分,引用main包才能使用包内的函数,main 包也就是程序的入口。

import(
    "fmt"
    "A"
    "B"
    "C"
    "github/hyperxxxx/aabb"
)

该处表示导入包,这里导入了标准库里面的fmt包,这个包主要是用来往屏幕输入输出字符串、格式化字符串。以及A、B、C包。如果导入github上的包,则以绝对路径表示,如包在github上的路径为github/hyperxxxx/aabb,则导入也为"github/hyperxxxx/aabb"。

然后在main函数里使用fmt包的输出函数fmt.Println输出HELLO WORLD。

image.png

(三)GO文件运行方法

要运行GO文件程序的话,我们就直接go run 文件名.go,包含了编译go build和运行go run两个步骤。

如果我们想先编译成二进制的话,可以在此文件夹下go build来编译整个文件夹的go文件,也可以go build 文件名.go编译某个文件,再go run 文件名.go。这样则不会再编译,加快go run的速度。

(四)if else和switch

func main( ) {
if num := 9; num < 0 {
    fmt.Println(num,"is negative" )
} else if num < 10 {
    fmt.Println(num,"has l digit")
} else {
    fmt.Println(num,"has multiple digits")
}
  1. if之后的条件不用括号,加了编译时候也会去掉。条件之后要大括号。
  2. else if前必须跟一个大括号,不然会报错。

image.png

  1. 在switch 后面的那个变量名,不要括号。
  2. 在c++里面,switch case 如果不加 break 的话会然后会继续往下跑完所有的case,在go语言里面的话是不需要加 break 的。
  3. go语言里面的switch 功能可以在同一个switch语句下使用任意的变量类型,甚至可以用来取代任意的if else 语句。
  4. 可以在 switch 后面不加任何的变量,然后在 case 里面写条件分支。

(五)函数定义

image.png

返回参数后置,可返回多参数,用括号包起来,用逗号隔开。

(六)错误处理

image.png

  1. 错误处理先引入errors包
  2. 在 go 语言里面符合语言习惯的做法就是使用一个单独的返回值来传递错误信息,这样能够很清晰地知道哪个函数返回了错误,并且能用简单的 if else 来处理这个错误。如果没有错误则 return 参数 ,..., nil。如果有错误则会return 参数 ,..., error。然后判断error是否=nil。

(七)格式化输出

  • %v只输出value
  • %+v 输出key value
  • %#v 输出包名.方法名{key value}

(八)字符数字转换

  • 在 go 语言当中,关于字符串和数字类型之间的转换都在 strconv 这个包下,这个包是 string convert 这两个单词的缩写。
  • 我们可以用 ParseInt 或者 ParseFloat来解析字符串为整数或浮点数,支持多种进制转换。
  • Atoi 把一个十进制字符串转成数字。itoA 把数字转成字符串。