go语言的基础知识点3 | 青训营

81 阅读2分钟
  • 导包

首先配置环境变量到src

接下来用 / 来做分割

import “/xxx/xxx/”

如果有多个包

import(

“”

“”

导入的包,导的是包所在文件夹的路径

使用时使用的是包名

同一个目录下同级文件的包名要一致


  • init函数 :初始化函数

每一个源文件都可以有init函数,在main函数之前被调用

全局变量>init函数>main函数 //调用次序

若多个文件都有init函数,则根据main函数导包时的次序来决定init的执行次序

  • 匿名函数:使用一次就结束,例子:

result :=func(num1 int,num2 int)int{

}(10,20)//传参

//不能滥用,对内存消耗大

  • 闭包: 返回的匿名函数+匿名函数之外的变量所组成的整体匿名函数中引用的哪个变量会保存在内存中,能一直使用

  • defer

golong中遇到defer关键字,不会立即执行deger后面的语句

而是将语句压入栈中,等函数执行完毕,再从栈中取出

而且,再压入栈时,当时语句用到的变量也存入

字符串函数//系统自带 len(str) //统计字符串长度,按字节输出

  • 内置函数

  • defer+recover错误处理机制

写一个defer的匿名函数

defer func(){

err := recover()

if err != nil{ //即有错误 }

}

  • 自定义错误:

需要导入errors包

errors.New("自定义错误")

  • go的面向对象

go没有类

存在很多全局变量和全局函数

面向对象程度不是很高,且简化很多方面

  • 结构体定义:

type 结构体名 struct{

}

  • 方法:

func (调用的结构体形参名 结构体名)方法名(){

}

若有返回string类型的方法,则当输出给结构体时,会自动调用该方法

  • 结构体的三种初始化方式

1. 直接声明

var s1 Stu = Stu {“小李”,19} //需要按定义次序来

2.按指定类型//注意逗号

var s2 Stu =Stu{

Name : “丽丽”, Age : 20,

}

3. 想要返回结构体的指针类型

var s3 *Stu =& Stu{“明明”,26}

或者

var s4 *Stu =& Stu{

Name: “娜娜”,

Age: 29,

}

  • 工厂模式:

建立一个大写字母开头的函数,返回值为一个结构体的指针

  • 继承

在子类中嵌套一个匿名父类结构体

//直接在结构体中输入父类结构体名即可

  • 思考与感悟

今天是go语言基础知识总结的最后一篇,接下来的笔记应该是关于字节内部课里的知识点了,加油!已经快要坚持一周了!