trpc-go 专题
约 75 分钟C2: 实现 trpc-go 服务
从零开始构建一个 trpc-go 服务,包含用户认证功能
学习目标
- 1.搭建 trpc-go 项目结构
- 2.定义 Protobuf 服务接口
- 3.实现服务端业务逻辑
课程内容
本课时将帮助你快速掌握相关知识。以下是示例代码:
main.go
1package main2 3import "fmt"4 5func main() {6 fmt.Println("Hello, Go!")7 8 // Go 的变量声明9 var name string = "TypeScript Developer"10 age := 25 // 短变量声明11 12 fmt.Printf("Name: %s, Age: %d\n", name, age)13}上面的代码演示了 Go 的基本语法,包括包声明、导入和变量声明。 注意第 8 行的短变量声明语法 :=,这是 Go 的特色。
与 TypeScript 对比
example.ts
// TypeScript 版本const name: string = "TypeScript Developer";const age = 25; // 类型推断 console.log(`Name: ${name}, Age: ${age}`);实战练习
实现用户注册服务
高级
基于 trpc-go 实现一个用户注册的 RPC 方法
初始代码
Go
1// user.proto 已定义,请实现服务端代码2package main3 4// 请实现 UserService 的 Register 方法查看参考答案
Go
1package main2 3import (4 "context"5 pb "your/proto/user"6)7 8type userServiceImpl struct {9 pb.UnimplementedUserServiceServer10}11 12func (s *userServiceImpl) Register(ctx context.Context, req *pb.RegisterRequest) (*pb.RegisterResponse, error) {13 // 验证输入14 if req.Username == "" || req.Password == "" {15 return nil, errors.New("username and password required")16 }17 18 // 创建用户(简化示例)19 user := &pb.User{20 Id: generateID(),21 Username: req.Username,22 }23 24 return &pb.RegisterResponse{User: user}, nil25}