1.创建项目,初始化项目 goctl api new firstdemocd firstdemo go mod tidy2.运行 go run firstdemo.go3.修改firstdemo.api文件后,重新生成代码 goctl api go--api ./firstdemo.api--dir . go run firstdemo.go4.添加和打印自定义配置 添加自定义配置firstdemo\etc\firstdemo-api.yaml Name : firstdemo- apiHost : 0.0.0.0Port : 8888 # 添加mysql的自定义配置 MySql : Datasource : root: password@tcp(127.0.0.1: 3306)/gin? charset=utf8mb4&parseTime=True&loc=Local 读取自定义配置firstdemo\internal\config\config.go package configimport "github.com/zeromicro/go-zero/rest" type Configstruct { rest. RestConf// 挂载自定义配置 Mysqlstruct { Datasourcestring } } 将自定义配置挂载到上下文firstdemo\internal\svc\servicecontext.go package svcimport ( "firstdemo/internal/config" ) type ServiceContextstruct { Config config. Config// 在上下文结构体中添加变量 Datasourcestring } func NewServiceContext ( c config. Config) * ServiceContext{ return & ServiceContext{ Config: c, // 将config挂载到上下文结构体 Datasource: c. Mysql. Datasource, } } 在handler中将结构体返回给前端firstdemo\internal\logic\firstdemologic.go func ( l* FirstdemoLogic) Firstdemo ( req* types. Request) ( resp* types. Response, errerror ) { // 获取自定义配置的mysql.datasource datasource:= l. svcCtx. Datasource resp= & types. Response{ Message: "你好:" + req. Name+ "\t" + datasource, } return resp, nil } 启动应用时打印自定义配置firstdemo\firstdemo.go package mainimport ( "flag" "fmt" "firstdemo/internal/config" "firstdemo/internal/handler" "firstdemo/internal/svc" "github.com/zeromicro/go-zero/core/conf" "github.com/zeromicro/go-zero/rest" ) var configFile= flag. String ( "f" , "etc/firstdemo-api.yaml" , "the config file" ) func main ( ) { flag. Parse ( ) // 初始化配置文件 var c config. Config conf. MustLoad ( * configFile, & c) fmt. Println ( "host:port" , c. Host, c. Port) // 输出自定义配置 fmt. Println ( "mysql database: " , c. Mysql. Datasource) // 创建服务 server:= rest. MustNewServer ( c. RestConf) defer server. Stop ( ) // 注册上下文 ctx:= svc. NewServiceContext ( c) handler. RegisterHandlers ( server, ctx) // 启动服务 fmt. Printf ( "Starting server at %s:%d...\n" , c. Host, c. Port) server. Start ( ) } 5.重启并查看结果 go run firstdemo.go