go 快速入门

本文探讨了Go语言的环境搭建、优点、全局变量和iota的使用、导入包、指针概念、slice操作、goroutine与channel通信、gomodule、生态发展、匿名函数与闭包、defer关键字、GOPATH、错误处理机制以及数组和切片的特性,还提及了RPC和网关应用。
摘要由CSDN通过智能技术生成

环境搭建

go语言优势

不依赖其他库:将依赖项直接编译到了可执行文件中

不需要像其他语言去绑定cpu分配时间片,这些go底层都实现封装好了

全局变量

:=方式不可作为全局变量声明方式

iota关键字 -只能与const关键字配合使用

默认为0,后续常量自动累加1

Import导包

指针概念:至少要知道一下三个概念

var p *int

p —— 指向变量的地址

&p —— 指针本身的地址

*P ——指向变量的值

那么 var pp **int

pp = &p

pp &pp *pp分别代表什么意思?

slice切片

cap是len的两倍左右!

每次扩容都是按2倍的cap扩容

go的继承封装多态

go反射机制

go的变量反射结构为下图:所以拿到变量就可以知道他的类型和数值

结构体标签

goroutine

使用:

channel:goroutine无法获得函数的具体执行情况,可以通过channel获得,也可以通过channel进行协程间通信

默认channel变量是加锁的

上述例子c<-666后会卡住,只有num:=<-c将c的数据取出后才会继续执行,也就说defer必然在num:=<-c语句执行后执行!

这就是无缓存channel

无缓冲channel原理如下图

有缓冲channel原理如下图:

有缓冲代码如下,但是如果c 复制了4次,那么就会卡住!

关闭channel

gomodule

项目案例

go的生态发展

1、匿名函数:函数定义的同时可以进行调用

匿名函数:

1.为了防止命名冲突

2.内存可以即用即释放

3.可以有效形成闭包

2.闭包:匿名函数+以外的变量,以下为闭包的使用样例

闭包可以有效的简化代码

从上图可以看出匿名函数以外的变量 是一直存在内存中的,数值不重置。所以闭包内存不可乱用。

3.defer关键字

在Golang中,程序遇到defer关键字,不会立即执行defer后的语句,二是将defer后的语句压入一个栈中(拷贝当前变量值,不会随着后面变量值变化而变化),然后继续执行后面的语句

栈有先进后出的特点

使用场景:如果你想关闭摸个使用的资源,可以在创建该资源时随手写上defer关闭该资源,因为defer有延迟执行机制(函数执行完毕再执行defer压入栈的语句)。

4.GOPATH

当前开发人员工作路径,import 包名,寻找的路径是从GOPATH/src后路径开始的

5.指针理解 值得思考

6.defer + recover 错误处理机制(异常处理)

7.数组首地址+1

var arr1[3] int16        arr1首地址为0xc0000100b0 arr1+1地址为 0xc0000100b2

var arr2[3] char         arr2首地址为0xc0000100b0 arr1+1地址为 0xc0000100b1

所以数组的每个元素地址间隔是取决于数组类型的!

8.切片slice

切片是对数组连续片段的引用,切片切得是数组的片段!

切片有3个字段的数据结构:一个是指向底层数组的指针,一个是切片的长度,一个是切片的容量

终止项不包含在切片内:即arr[1:3] 表示:索引从1开始到3结束(但不包含3)

切片容量是长度的两倍左右

索引len(arr) 为2 cap(arr)可能为5

切片定义好后,不可以直接使用,需要让其引用到一个数组或make一个空间供切片来使用

切片可追加元素:append,原理是创建新数组、复制老数组元素、然后删除老数组元素。类似C++的vector

9.面向对象

入门资料:

Introduction · Go入门指南

笔记:

切片和数组:切片是数组的引用,多个切片之前同一个数组,是共享存储的。所以使用起来效率更高。

切片定义不需要指定大小,大小是动态可变的。数组声明是就需要固定大小。

2021.9.17:

GO 高级编程:

1.rpc:

网关:接受所有的请求,然后往下分发

api网关:

https://www.cnblogs.com/ASPNET2008/p/6442423.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩澜大大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值