# go-learning **Repository Path**: salierime/go-learning ## Basic Information - **Project Name**: go-learning - **Description**: go基础,快速上手 go编程。 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-12 - **Last Updated**: 2024-08-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言 ## README # 1. go环境安装: https://studygolang.com/dl # 2. 文件索引: ## 00test_init_func.go (1) 测试函数初始化 ## 01test_var.go (1) 变量
(2) iota计数
(3) for
## 02test_func.go (1) 函数传参
(2) 值传递和引用传递
(3) 延迟函数
(4) 匿名函数
(5) 回调函数
(6) 闭包
## 03test_data_structure.go (1) 数组 --值类型
(2) 切片 --引用类型
(3) map --引用类型
(4) 指针
(5) 结构体 --值类型
## 04test_OOP.go (1) 封装 ## 05test_method.go (1) 封装 ## 06test_extend.go (1) 继承 ## 08 test_interface_multi.go (1) 多继承 ## 09test_assert.go (1) 断言 ## 10test_error.go (1) 异常处理 ## 11test_anonymous_import.go (1) 匿名导入 ## 12test_utils.go (1) 指定格式输出时间
(2) Tick心跳 ## 13test_file.go (1) 获取文件信息
(2) 创建文件
(3) 读文件
(4) 写文件
(5) 赋值文件
(6) 断点续传
(7) 利用bufio读写文件
(8) 遍历文件夹
## 14test_multi_thread.go (1) 协程建立
(2) 协程礼让
(3) 终止协程
(4) 利用锁解决并发问题
(5) channel
## 15test_gin (0) 下载 gin 框架: ```shell go get -u github.com/gin-gonic/gin ``` 注:如果下载不下来,点击 Settings->Go Modules,在 Environment配置:GOPROXY=https://goproxy.io
(1) Gin 服务开启
(2) 中间件使用
(3) http 请求、http 请求带参数、http请求接收参数、返回页面、路由跳转、返回 404、路由组
## 16test_xorm (0) 下载 xorm 框架: ```shell go get xorm.io/xorm ``` 官网:https://xorm.io/
(1) 表同步
(2) 插入数据、插入多条数据
(3) 更新、删除数据
(4) 执行 sql
(5) 查询数据
(6) 事务
## 17test_grpc (1) 安装: 官网:https://grpc.io 1) 下载 protocol buffers https://github.com/protocolbuffers/protobuf/releases
2) 下载 grpc核心包: ```shell go get google.golang.org/grpc ``` 3) 安装 grpc基础包:
```shell go install google.golang.org/protobuf/cmd/protoc-gen-go@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest ``` (2) 使用:
Step1:编写 protoc 文件
Step2: ```shell cd code/test_grpc/hello_server/proto/ protoc --go_out=. hello.proto protoc --go-grpc_out=. hello.proto ``` (2.1) 服务端编写
Step1:创建 gRPC Server对象,你可以理解为它是 Server 端的抽象对象
Step2:将 server(其包含需要被调用的服务端接口)注册到 gPRC Server 的内部注册中心。这样可以在接收到请求时,通过内部的服务发现,发现该服务端接口并转接进行逻辑处理
Step3:创建Listen,监听 TCP端口
Step4:gRPC Server 开始监听 Accept,直到 Stop
(2.2) 客户端编写
Step1:创建与给定目标(服务端)的连接交互
Step2:创建server 的客户端对象
Step3:发送 PRC请求,等待同步响应,得到回调后返回响应结果
Step4:输出响应结果
# 3. 知识点: ## 3.1. 值类型与引用类型 (1)值类型:
值传递:传递的是数据的副本,修改数据对于原始的数据没有影响。
值类型的数据默认都是值传递:基础数据类型、array、struct
(2)引用类型:
引用传递:传入的是地址
引用类型的数据:slice、map、channel
## 3.2. recover: (1)recover的作用是捕获panic,从而恢复正常代码执行。
(2)recover必须配合defer使用
(3)recover没有传入参数,但是有返回值,返回值就是panic传递的值
## 3.3. 名称大小写: (1)Golang使用名称首字母大小写来判断一个对象(全局变量、全局常亮、类型、结构字段、函数、方法)的访问权限,对与包而言同样如此。
(2)包中成员名称首字母大小写决定了该成员的访问权限:首字母大写可被包外访问;首字母小写仅包内成员可以访问。
## 3.4. 不要通过共享内存来通信,而应该通过通信来共享内存