走进Golang语言 | 青训营笔记

44 阅读4分钟

开始

在每次学习一种语言的,都需要先从认识这么语言开始,首先去了解这门语言的好处?应用场景?代码风格?发量消耗? 显著特点? 在本节课堂“走进Go语言基础语言,我们首先了解了go语言的有点有哪些,包括:

  1. 高性能、高并发
  2. 语法简单学习曲线平缓
  3. 丰富的标准库
  4. 完善的工具链(性能优化,代码提示。。。)
  5. 静态链接
  6. 快速编译(几乎最快!)
  7. 跨平台(linux MacOS Android IOS)
  8. 垃圾回收(无需要考虑内存的分配释放)

首先看了一个最简单的Go程序,如下图 image.png 看到这段程序的第一反应:嗯?函数用func?对于这种新鲜的书写风格,一时间感觉这门语言的风格需要适应一段时间。另外感觉到代码的简洁程度介于C与python之间。当然这只是个人的一点小小的见解。

入门

Go语言是一门强类型语言,变量类型主要包括 字符串 整数 浮点型 布尔型

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)
    fmt.Println(g)
}

变量的声明: 1.var 变量名 = value 能自动推导类型 2.变量名 :=值 3.常量const

判断语句ifelse:

image.png 在if中后面应当紧跟大括号,不能把语句和if写一行。 同样也可以使用else if 在这里注意到了第17行的用法,在if中声明变量后直接使用。

没有括号!!!

循环语句:

image.png 在golang语言中,只有for循环一种循环方式,没有while与dowhile 我们可以直接使用for{}来写死循环 continue break同样适用

switch:

image.png 在该案例中用到了time包中的Now()与Hour(),在后面老师具体解释了time模块 可以使用任意的类型,不需要写break。

数组:

image.png 索引从0开始,案例中 var a [5]int创建一个大小为5的数组 也可以用b:=[5]int{1,2,3,4,5}来进行初始化

切片: 我们可以使用make来创建一个切片

image.png 这是一个相比c java python比较新鲜的用法,使用make关键字来实现创建切片,对切片我们可以使用append()方法向切片中追加元素,功能比数组更加强大。

我们还可以使用copy(make_01,make_02)来继续进行复制 来golang当中,同样可以使用python的切片方法例如s[2:5]就是从索引2到索引4的所有元素

map:

image.png map在其他地方叫做字典等,是一个键值对的类型通过m["key_name"]来查找值,如果没有的,会被判为false

range:

image.png

函数:

image.png 在golang中,关键字不再是function,而是func。

指针:

image.png 我们通过n+=2只是把值接过来用,并没有真正的改变,我们可以使用类似C中的指针。

结构体:

image.png

通过关键字type XX struct{}来创建一个结构体 赋值例如:a:=user{name:"wang",password:"1024"} 我们也可以对单个属性进行复制,如案例中的c

结构体方法:

image.png 狗仔一个函数,并使用结构体的类型来进行创建即可

错误处理:

image.png

关于错误处理,我们要在后面再添加一个(err error),当碰见错误时,执行err中的业务

字符串操作:

image.png

可以使用Contains来检测是否包含; 使用Count来计数某种元素的出现次数; Index进行定位,输出索引; 还有更多方法参考示例代码

字符串格式化:

image.png

在案例当中,我们可以发现可以用%v来格式化字符串,当遇到是一种map类型,使用%v仅输出value,我们可以通过%+v同时输出key与value

JSON处理:

image.png

我们一般使用json.Marshal()方法来序列化; 使用json.Unmarshal()来反序列化

时间处理:

image.png 引入time模块,可以通过Now获取当前时间; 通过.Year() .Month() .Day() .Hour() .Minute(); 在业务当中如果我们想获取一个时间戳,我可以通过now.Unix()来获取。

数字解析:

image.png 主要就是通过ParseFloat ParseInt来实现将字符串转换成浮点数或整数

进程信息:

image.png

这就是在本次课堂中所学到的,欢迎各位小伙伴指正!