GO基础语法|青训营笔记

67 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

语言优势

极简单的部署方式

  • 可直接编译成机器码,编译速度快
  • 不依赖其他库
  • 直接运行即可部署

静态类型语言

编译的时候检查出来隐藏的大多数问题

强大的标准库

  • runtime系统调度机制
  • 高效的GC垃圾回收
  • 丰富的标准库

基础语法

局部变量的声明

//方法一:
var a int
//方法二:  
var a int = 100
//方法三:
var c = 100
//方法四:
e := 100

全局变量的声明

多变量的声明

//单行写法: 
var xx, yy int = 100, 200//多行写法: 
var(
    vv int = 100
    ii bool = true
)

import导包

import_ 'fmt' //给fmt包起一个别名,匿名,无口法使用当前包的方法,但是会执口行当前的包内部的init()方法import aa "fmt" //给fmt包起一个别名,aa,aa.Println()来直接调用。import ."fmt" // 将当前fmt包中的全部方法,导入到当前本包的作用中
             //fmt包E的全部的方法可以直接使用API来调用,不需要fmt.API来调用
​
​

defer函数压栈出栈

defer函数的调用与栈结构类似,先进后出,即先调用的defer函数会先进入栈,后调用的会先出栈进行调用。

函数声明周期结束才出栈,在return之后才调用

数组定义

image-20220421145356244

数组遍历

for循环下标进行

image-20220421145411563

使用range函数

image-20220421145424252

注意: 数组传递函数是值传递的过程,动态数组引用传递

切片声明

声明切片,但没有分配空间

image-20220422143241072

第二种方式

image-20220422143428413

第三种方式

image-20220422143514029

判断是否为空

image-20220422143618926

声明方式总结

image-20220422143642439

切片动态追加

追加扩容

image-20220422145119596

len和cap

image-20220422145325720

再初始化的时候

如果没有设置cap,则cap的值默认为len

扩容机制

image-20220422145339678

切片深拷贝

image-20220422145952118