package dataimport ("context""fmt""github.com/go-kratos/kratos/v2/log"v1 "helloworld/api/helloworld/v1""helloworld/internal/biz"
)//类型转换,不需要初始化零值
var _ biz.GreeterRepo = (*greeterRepo)(nil)
//会分配内存,初始化结构体的零值
var _ biz.GreeterRepo = new(greeterRepo)
//错误make只能初始化channel/slice/map,返回具体对象
//var _ biz.GreeterRepo = make(greeterRepo{})
//这种写法跟方法接收器有关,如果接收器含有指针则会报错 func (r *greeterRepo) CreateGreeter(ctx context.Context, g *biz.Greeter) error {//只能是类型本身的类型做接收器func (r greeterRepo) CreateGreeter(ctx context.Context, g *biz.Greeter) error {//var _ biz.GreeterRepo = greeterRepo{}
type greeterRepo struct {data *Datalog  *log.Helper
}// NewGreeterRepo .
func NewGreeterRepo(data *Data, logger log.Logger) biz.GreeterRepo {return &greeterRepo{data: data,log:  log.NewHelper(logger),}
}func (r *greeterRepo) CreateGreeter(ctx context.Context, g *biz.Greeter) error {reply, err := r.data.gc.Say(ctx, &v1.HelloRequest{Name: g.Name})if err != nil {fmt.Println(11,err.Error())}fmt.Printf("[grpc] Say %+v\n", reply)return nil
}func (r *greeterRepo) UpdateGreeter(ctx context.Context, g *biz.Greeter) error {return nil
}

biz

package bizimport ("context""github.com/go-kratos/kratos/v2/log"
)type Greeter struct {Name string
}type GreeterRepo interface {CreateGreeter(context.Context, *Greeter) errorUpdateGreeter(context.Context, *Greeter) error
}type GreeterUsecase struct {repo GreeterRepolog  *log.Helper
}func NewGreeterUsecase(repo GreeterRepo, logger log.Logger) *GreeterUsecase {return &GreeterUsecase{repo: repo, log: log.NewHelper(logger)}
}func (uc *GreeterUsecase) Create(ctx context.Context, g *Greeter) error {return uc.repo.CreateGreeter(ctx, g)
}func (uc *GreeterUsecase) Update(ctx context.Context, g *Greeter) error {return uc.repo.UpdateGreeter(ctx, g)
}

var _ biz.GreeterRepo = (*greeterRepo)(nil)的总结相关推荐

  1. var _ HelloServiceInterface = (*HelloServiceClient)(nil)的特殊含义

    1.     (*HelloServiceClient)(nil) var _ HelloServiceInterface = (*HelloServiceClient)(nil) 1. 创建一个He ...

  2. var _ 接口 = 结构体{}

    gin源码ps:把问题暴露在编译阶段,实例化Engine结构体,并立马丢掉,确保结构体实现了IRouter接口var _ 接口 = &结构体{}

  3. go 调用c 编译器找不到方法_深度解密Go语言之关于 interface 的10个问题

    这次文章依然很长,基本上涵盖了 interface 的方方面面,有例子,有源码分析,有汇编分析,前前后后写了 20 多天.洋洋洒洒,长篇大论,依然有些东西没有涉及到,比如文章里没有写到反射,当然,后面 ...

  4. golang 接口类型 interface 简介

    目录 1. Go 语言与鸭子类型的关系 2. 值接收者和指针接收者的区别 方法 值接收者和指针接收者 两者分别在何时使用 3. iface 和 eface 的区别是什么 4. 接口的动态类型和动态值 ...

  5. golang 接口类型 interface 简介使用

    1. Go 语言与鸭子类型的关系 先直接来看维基百科里的定义: If it looks like a duck, swims like a duck, and quacks like a duck, ...

  6. Go 语言学习总结(7)—— 大厂 Go 编程规范总结

    一.接口使用 1.如果希望接口方法修改基础数据,则必须使用指针传递 type F interface {f() }type S1 struct{}func (s S1) f() {}type S2 s ...

  7. 两万字深入解密 Go 语言接口的那些事儿 | 技术头条

    Go 语言的接口的原理是什么?是如何使用?它和C++接口有什么异同呢?本文作者用两万多字深入一一为你讲述Go语言interface的那些事儿. 作者 | 饶全成 责编 | 伍杏玲 这篇文章的架构比较简 ...

  8. Go 编码建议——功能篇

    文章目录 1.不需要指向 interface 的指针 2.编译期验证 interface 合理性 3.接收器为值和指针实现接口的区别 4.零值 Mutex 是有效的 5.在边界处拷贝 slice 和 ...

  9. Effective_go_Notes

    目录 目录 Commentary(注释) Naming conventions(命名规则) 包名 接收者 接口名称 混合名称 Semicolons(分号) Control structures(控制语 ...

最新文章

  1. Linux学习(七)---组管理和权限管理
  2. Effective C++ 小笔记:条款13-17(第三章)
  3. MINA与JMX集成(翻译)
  4. idea ssh连接mysql数据库_mysql命令行客户端如何通过ssh服务器连接数据库啊?
  5. 作为技术人员出现场,感触颇多
  6. 收藏夹吃灰系列(五):解决Win10插入U盘不显示磁盘可用容量且打不开卡死问题 | 超级详细,建议收藏
  7. android+3.1.2+imagebutton监听,button以及Imagebutton的使用
  8. 阵列天线的优化综合-赋形方向图
  9. ROS Bridge 笔记(02)— carla_ros_bridge 功能包(准备 ROS环境、运行 ROS Bridge、配置 CARLA 参数、同步模式下使用 ROS Bridge、主车辆控制)
  10. Java实现国密电子签章(itext+bouncycastle +sm3withsm2)
  11. 关于惠普打印机可以打印但是无法扫描的问题
  12. 微信无法直接打开淘宝链接是怎么回事?
  13. Bootstrap 框架-下拉菜单
  14. 大国的崛起:第二集:小国大业 荷兰
  15. 计算机学院学生王鹏,王鹏-计算机与控制工程学院
  16. UI设计课程教程分享:Banner的设计和技巧
  17. RTKLIB学习总结(五)后处理函数调用流程、postpos、execses_b、execses_r、execses、procpos、rtkpos
  18. java 构造方法能被继承吗_Java中构造函数可以被继承么
  19. C#textBox控件保留上次输入
  20. 外网如何访问本地项目

热门文章

  1. JAVA设计模式 - 代理模式
  2. 模拟实现HashMap
  3. mysql怎么打印数据_从mysql打印数据
  4. “一休数学思维”改名“海豚思维”,并完成数千万元Pre-A轮融资
  5. vyatta 6.4 的设置
  6. 正则表达式中,[\s\S]*
  7. 【C语言期末实训】学生学籍管理系统
  8. Django 1.8.2 文档
  9. 【leetcode】390. Elimination Game
  10. JavaScript依赖注入的实现思路