Golang-面向接口

429 阅读1分钟
package post

type Service interface {
    ListPosts() ([]*Post, error)
}

type service struct {
    conn *grpc.ClientConn
}

func NewService(conn *grpc.ClientConn) Service {
    return &service{
        conn: conn,
    }
}

func (s *service) ListPosts() ([]*Post, error) {
    posts, err := s.conn.ListPosts(...)
    if err != nil {
        return []*Post{}, err
    }
    
    return posts, nil
}

实现了3方的解耦,即定义方(A)可以定义参数为Service,使用者(B)可以灵活初始化实现了Service接口的结构体,然后传给定义方的调用方(C)即可。

draveness.me/golang-101/

mp.weixin.qq.com/s/jQtxakIU0…

smartkeyerror.com/Golang-inte…

studygolang.com/articles/21…