Go语言学习笔记(2)|青训营笔记

77 阅读4分钟

这是我参与「第五届青训营」笔记创作活动的第2天,今天的笔记是为了补充上回笔记之中所遗漏的一些知识点。

一、本堂课的重点内容

今天的课程的主要知识框架为:

  • Go语言的背景介绍

    • Go语言的背景
    • Go语言的使用场景及优点
  • Go语言的快速入门

    • 开发环境的搭建
    • 基础语法讲解
    • 标准库
  • Go语言实战

    • 猜谜游戏
    • 命令行字典
    • SOCKS5代理

二、详细知识介绍

    在前面的笔记之中已经对上面的知识框架之中的Go语言的背景、Go语言的使用场景及优点以及对Go语言的快速入门之中,从输出Hello world程序开始介绍了package关键字、import关键字、Go的main函数以及标准输出,然后介绍了Go语言的变量、Go语言的三大逻辑结构(顺序结构、分支结构和循环结构),那么接下来将会对Go语言的函数、常量、数组、切片做一下个人的笔记整理。

    2.1 基础语法的讲解

       2.1.1 Go语言的常量

      Go语言的常量使用的关键字是const,与变量不同的点是常量的值必须在进行声明的同时就将其进行初始化,否则会报错,紧接着还有一些不同的地方在于,Go语言的常量实际上是会默认进行自动类型推导的,对于Go语言的常量声明方式,主要有以下几种:

// Go语言常量声明方式--单个常量声明
const constVariableName typeName = initializeNumber(必须要有)
const constVariableName = initializeNumber(必须要有)

// Go语言常量声明方式——多个常量的声明
const(
    constVariableName typename = initializeNumber
    ......
)

const(
    constVariableName = initializeNumber
    ......
)

      2.1.2 Go语言的枚举类型

      Go语言的枚举类型是得与常量相互结合的,并在赋值的时候使用iota关键字进行声明的,具体使用方式是:

// 方式1
const(
    numberA = iota // numberA = 0
    numberB = iota // numberB = 1
    numberC,numberD = iota,iota // numberC = 2,numberD = 2
)

// 方式2
const number = iota //number = 0

      PS:值得注意的是,iota每次遇到新的const关键字会重置为0.

      从上面的代码可以看出来,在进行多个常量同时声明的时候使用关键字iota会每次都自增1,直到遇到下一个const会被重置为0.

      2.1.3 Go语言的数组

      当需要大量的同种类型的数据的时候,我们如果继续采用一个变量一个变量的去声明会变得麻烦,这个时候需要换一种方式,那就是采用数组来进行数据的存储,对于Go语言的数字语法是这样子的:

var arrayName [size]typename
arrayName := [size]typename{...}
arrayName := []typename{...} //若采用这种方式必须进行初始化

      如果要访问数组之中的数据,同C/C++语言一样,可以采用数组名[下标编号]的方式进行访问。然而数组有一个致命的缺陷,那就是数组在声明的时候就固定好了。对于像C/C++语言有vector向量容器给我们使用,在Go语言之中则用的是切片语法。

      2.1.4Go语言的切片语法

      Go语言的切片是一个可以快速对数据集合进行操作的,可以将它看成是动态的数组,切片的语法为:

var sliceName = make([]typename,length)
sliceName := make([]typename,length)

      使用它也可以像使用数组一样,如果容量不够了,可以使用append()方法进行数据追加,当然切片还有一些比较特殊的方法,可以进入首段的链接进行查看。

      2.1.5 Go语言的函数

      对于Go语言的函数有三种类型,一种是常见的函数声明及定义,一种是结构体函数,还有一种是匿名函数,对于课中所讲解的主要针对的函数是寻常所见到的函数,以及结构体函数的声明.

      Go语言的函数需要使用func关键字来进行声明,并且对于Go语言的函数是可以返回多个值的,具体两者的定义规则如下:

func functionName(InterfaceVariableName type,...)(ReturnVariableType,...){

}
// 例如:
func test(a int,b int)(int,int){
    return a,b
}

type user struct{
    id string
    password string
}

func (u user)test(a string)bool{
    return u.password==a
}

三、个人总结

    在本次学习之中,快速掌握了Go语言的基本语法,并通过几个实战项目进行了练手,巩固了所学的知识,当然在课程讲解的过程之中虽然依旧存在一些没有讲清楚的点,但是在课后查阅资料的过程,能够使自己对某一知识点有更加深入的了解。

四、参考文献

  1. Go语言的切片
  2. 匿名函数