go-zero学习笔记(一)

news2025/1/31 12:14:29

基础环境搭建

  1. 安装go环境
    网上文章比较多,不在赘述,我当时参考的文章是:https://blog.csdn.net/weixin_41287260/article/details/143661816
    记得修改go env 中的环境变量,
    主要是goproxy 改成七牛云的,这样下载代码库时比较快

    go env -w GOPROXY=https://goproxy.cn,direct
    

    go官网:https://golang.google.cn/dl/
    常用命令:

    go mod init name
    go mod tidy
    go build
    go run
    
  2. 安装gozero、goctl
    go-zero官网:https://go-zero.dev/

    使用goctl可以快速帮助我们实现基础框架,减少工作量!!!
    goctl安装:go install github.com/zeromicro/go-zero/tools/goctl@last
    可参考:https://blog.csdn.net/rxbook/article/details/144964978

    当然,也可以下载源码,然后go build, 在将生成的文件放到go的bin目录下

    常用命令:

    goctl api go -api user.api -dir . -style gozero 
    goctl rpc protoc xxx.proto --go_out=. --go-grpc_out=. --zrpc_out=.
    
  3. 安装protoc、protoc-gen-go 和 protoc-gen-go-grpc
    编写rpc部分会用到
    可参考:https://blog.csdn.net/m0_74823388/article/details/144277792

    当然,也可以下载源码,然后go build, 在将生成的文件放到go的bin目录下

  4. 安装etcd
    go-zero的默认是将服务注册到ercd中去,因此,最好也将etcd也安装了
    可参考:https://blog.csdn.net/qq_55272229/article/details/141607072

  5. 安装goctl-swagger
    通过插件goctl-swagger来将.api文件转化为swagger格式的json文件,该接口可以直接作为前后端的接口文档进行使用。
    这玩意主要是在生成文档的时候使用。
    可参考:https://blog.csdn.net/weixin_49369316/article/details/129439722
    go-zero插件goctl-swagger的坑

    当然,也可以下载源码,然后go build, 在将生成的文件放到go的bin目录下

    常用命令:

    goctl api plugin -plugin goctl-swagger="swagger -filename user.json" -api user.api -dir .
    
  6. 安装gormt
    在开发中,我们大概率会使用到数据库,该工具可以帮我们实现mysql数据库转 struct 工具,可以将mysql数据库自动生成golang sturct结构,带大驼峰命名规则。带json标签

    官网:https://gitcode.com/gh_mirrors/go/gormt/blob/master/README_zh_cn.md

    具体操作:

    a. 安装:go install github.com/xxjwxc/gormt@last
    b. 创建配置文件config.yml

     	```yaml
     	base:
     	    is_dev: false
     	out_dir: ./model  # 输出目录
     	url_tag: json # web url tag(json,db(https://github.com/google/go-querystring))
     	language: 中 文  # 语言(English,中 文)
     	db_tag: gorm # 数据库标签(gorm,db)
     	simple: false # 简单输出(默认gorm标签不输出)
     	is_out_sql: false # 是否输出 sql 原信息
     	is_out_func: true # 是否输出 快捷函数
     	is_foreign_key: true # 是否导出外键关联
     	is_gui: false  # 是否ui模式显示
     	is_table_name: false # 是否直接生成表名,列名
     	is_null_to_point: false # 数据库默认 'DEFAULT NULL' 时设置结构为指针类型
     	is_web_tag: false
     	is_web_tag_pk_hidden: false
     	table_prefix: "" #表前缀
     	table_names: "" #指定表生成,多个表用,隔开
     	is_column_name: true # 是否生成列名
     	is_out_file_by_table_name: false # 是否根据表名生成多个model
     	db_info:
     	    host : 127.0.0.1
     	    port : 3306
     	    username : root
     	    password : qwer
     	    database : oauth_db
     	    type: 0 # 数据库类型:0:mysql , 1:sqlite , 2:mssql
     	self_type_define: # 自定义数据类型映射
     	    datetime: time.Time
     	    date: time.Time
     	out_file_name: "" # 自定义生成文件名
     	web_tag_type: 0 # json tag类型 0: 小驼峰 1: 下划线
     	
     	```
    

    c. 在配置文件的目录下执行 gormt -g=false

  7. 安装go编译器goland
    linux下Goland图标解决方案参考:https://blog.csdn.net/theonepiece/article/details/125244617

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2286913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MinIO的对象存储增删改查

MinIO是一个高性能的分布式对象存储服务。Python的minio库可操作MinIO,包括创建/列出存储桶、上传/下载/删除文件及列出文件。 查看帮助信息 minio.exe --help minio.exe server --help …

观察者模式和订阅发布模式的关系

有人把观察者模式等同于发布订阅模式,也有人认为这两种模式存在差异,本质上就是调度的方法不同。 发布订阅模式: 观察者模式: 相比较,发布订阅将发布者和观察者之间解耦。(发布订阅有调度中心处理)

(2025 年最新)MacOS Redis Desktop Manager中文版下载,附详细图文

MacOS Redis Desktop Manager中文版下载 大家好,今天给大家带来一款非常实用的 Redis 可视化工具——Redis Desktop Manager(简称 RDM)。相信很多开发者都用过 Redis 数据库,但如果你想要更高效、更方便地管理 Redis 数据&#x…

Baklib引领内容管理平台新时代优化创作流程与团队协作

内容概要 在迅速变化的数字化时代,内容管理平台已成为各种行业中不可或缺的工具。通过系统化的管理,用户能够有效地组织、存储和共享信息,从而提升工作效率和创意表达。Baklib作为一款新兴的内容管理平台,以其独特的优势和创新功…

Java实现.env文件读取敏感数据

文章目录 1.common-env-starter模块1.目录结构2.DotenvEnvironmentPostProcessor.java 在${xxx}解析之前执行,提前读取配置3.EnvProperties.java 这里的path只是为了代码提示4.EnvAutoConfiguration.java Env模块自动配置类5.spring.factories 自动配置和注册Enviro…

房屋租赁系统在数字化时代中如何重塑租赁服务与提升市场竞争力

内容概要 在当今快速发展的数字化时代,房屋租赁系统的作用愈发重要。随着市场需求的变化,租赁服务正面临着新的挑战与机遇。房屋租赁系统不仅仅是一个简单的管理工具,更是一个能够提升用户体验和市场竞争力的重要平台。其核心功能包括合同管…

C++ ——— 学习并使用 priority_queue 类

目录 何为 priority_queue 类 学习并使用 priority_queue 类 实例化一个 priority_queue 类对象 插入数据 遍历堆(默认是大堆) 通过改变实例化的模板参数修改为小堆 何为 priority_queue 类 priority_queue 类为 优先级队列,其本质就是…

DeepSeek 模型全览:探索不同类别的模型

DeepSeek 是近年来备受关注的 AI 研究团队,推出了一系列先进的深度学习模型,涵盖了大语言模型(LLM)、代码生成模型、多模态模型等多个领域。本文将大概介绍 DeepSeek 旗下的不同类别的模型,帮助你更好地理解它们的特点…

Three.js实现3D动态心形与粒子背景的数学与代码映射解析

一、效果概述 本文通过Three.js构建了一个具有科技感的3D场景,主要包含两大视觉元素: 动态心形模型:采用数学函数生成基础形状,通过顶点操作实现表面弧度。星空粒子背景:随机分布的粒子群组形成空间层次感。复合动画…

linux asio网络编程理论及实现

最近在B站看了恋恋风辰大佬的asio网络编程,质量非常高。在本章中将对ASIO异步网络编程的整体及一些实现细节进行完整的梳理,用于复习与分享。大佬的博客:恋恋风辰官方博客 Preactor/Reactor模式 在网络编程中,通常根据事件处理的触…

多目标优化策略之一:非支配排序

多目标优化策略中的非支配排序是一种关键的技术,它主要用于解决多目标优化问题中解的选择和排序问题,确定解集中的非支配解(也称为Pareto解)。 关于什么是多目标优化问题,可以查看我的文章:改进候鸟优化算法之五:基于多目标优化的候鸟优化算法(MBO-MO)-CSDN博客 多目…

电子电气架构 --- 在智能座舱基础上定义人机交互

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…

Autosar-Os是怎么运行的?(时间保护)

写在前面: 入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!! 1.功能概述 AUTOSAR OS 的四大可定制类型凸显了时间保护(Timing Protection)…

一种用于低成本水质监测的软传感器开源方法:以硝酸盐(NO3⁻)浓度为例

论文标题 A Soft Sensor Open-Source Methodology for Inexpensive Monitoring of Water Quality: A Case Study of NO3− Concentrations 作者信息 Antonio Jess Chaves, ITIS Software, University of Mlaga, 29071 Mlaga, Spain Cristian Martn, ITIS Software, Universi…

5分钟带你获取deepseek api并搭建简易问答应用

目录 1、获取api 2、获取base_url和chat_model 3、配置模型参数 方法一:终端中临时将加入 方法二:创建.env文件 4、 配置client 5、利用deepseek大模型实现简易问答 deepseek-v3是截止博文撰写之日,无论是国内还是国际上发布的大模型中…

算法基础学习——二分查找(附带Java模板)

有单调性的数列一定可以使用二分,没有单调性的题目也可能可以使用二分; (一)整数二分 二分的本质: 在某个整数区间内,存在某种性质使得区间内左半边的数都不满足该性质;而右半边的数都满足该性…

python-leetcode-路径总和

112. 路径总和 - 力扣(LeetCode) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:de…

乐理笔记——DAY01

三分钟音乐社视频地址: 【四川音乐学院作曲硕士】零基础自学音乐学乐理合集-第二季(最终版)/已完结https://www.bilibili.com/video/BV14p4y1e7TV?spm_id_from333.788.videopod.episodes&vd_source0a2d366696f87e241adc64419bf12cab&am…

使用DeepSeek技巧:提升内容创作效率与质量

一、引言 在当今快节奏的数字时代,内容创作的需求不断增加,无论是企业营销、个人博客还是学术研究,高效且高质量的内容生成变得至关重要。DeepSeek作为一款先进的人工智能写作助手,凭借其强大的语言生成能力,为创作者…

视频编辑系列——Shotcut如何裁切视频黑边并放大画面导出

会议录屏经常出现不满屏的现象(图1),通过本方法可以调整为图2。 图1 图2 打开shotcut,将待裁剪视频导入,将视频拖到时间线。顶部菜单栏点击“滤镜”,新建一个“尺寸、位置与旋转”的滤镜,然后…