# skill **Repository Path**: qiaogy91/skill ## Basic Information - **Project Name**: skill - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-02 - **Last Updated**: 2024-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README - 仓库路径: ```shell https://gitee.com/qiaogy91_admin/skill.git go mod init gitee.com/qiaogy91_admin/skill ``` ```text // go_package="项目名称/proto文件目录" option go_package="gitee.com/qiaogy91_admin/skill/pb"; /* protoc -I=./ --go_out=./ --go_opt=module="gitee.com/qiaogy91_admin/skill" pb/hello.proto -I # 编译器的工作目录,此处为项目根目录 --go_out # 文件的输出目录(会自动生成目录结构,此处表示从项目根路径开始生成) --go_opt # 其他参数,此处填写项目 init 时的路径名称 # 生成路径时,会从proto 文件的 go_package 路径中删除掉此处定义的 module 路径,作为最终文件生成的目录 # 目录如果不存在则创建,存在则不创建 */ ``` ```text 数组、切片、map、结构体各种类型如何定义 ``` - any 类型: ```text // any 类型 // find / -name any.proto /usr/local/Homebrew/Cellar/protobuf/26.1/include/google/protobuf/any.proto // 安装的时候,protoc 内置的一些Message 定义 建议cp 到当前pb 目录下直接使用,避免不同系统路径不同造成影响 ``` - 官网文档 [protobuf 语法](https://protobuf.dev/programming-guides/proto3/) --- - 补充:map 类型的字段 gorm:"serializer:json" - 步骤: - 业务定义:struct、interface - 业务实现:impl - 业务注册:注册给grpc Server 的服务器,跟怼api 一样的道理 - 有时间看下 [mcub ioc](github.com/infraboard/mcube/ioc) - 需要实现: - 不添加Ioc 机制的情况下: - grpc 在项目中完整的 server、client 实现 - token 认证 - stream 方法中的参数、客户端。各方法目的都是获取能够处理数据的 stream 对象 - 对于客户端 upload、download 即可,不要双向数据流,不常用 ; - 客户端使用:重启一个干净的客户端,完整使用方式 - 添加Ioc 框架中集成 - 流程 - 客户端使用 SDK