golang 开发入门01-用户增删改查接口实现

定义实体

通过struct 定义实体

// 用户实体
type User struct {
	// 主键
	Id int
	// 用户登录名
	Username string
	// 登录密码
	Password string
}

模拟存储

定义一个存储接口,包含增删改查接口

// 用户存储接口
type UserStore interface {
	// 根据ID获取用户
	Get(id int) (*domain.User, error)

	// 获取所有用户
	Gets() ([]*domain.User, error)

	// 持久化用户
	Save(u *domain.User) error

	// 更新用户
	Update(u *domain.User) error

	// 删除用户
	Delete(id int) error
}

实现存储接口

// 实现UserStore接口
type UserStoreImpl struct {
	// 用map 模拟存储数据库
	db map[int] *domain.User
}


func (userStore *UserStoreImpl) Get(id int) (*domain.User, error) {
	user := userStore.db[id]
	return user, nil
}

func (userStore *UserStoreImpl) Gets() ([]*domain.User,error ) {
	users := make([]*domain.User,len(userStore.db))
	for _, v := range userStore.db {
		users = append(users,v)
	}
	return users,nil
}

func (userStore *UserStoreImpl) Save(u *domain.User) error {
	userStore.db[u.GetId()] = u;
	return nil
}

func (userStore *UserStoreImpl)  Update(u *domain.User) error {
	userStore.db[u.GetId()] = u;
	return nil
}

func (userStore *UserStoreImpl) Delete(id int) error {
	delete(userStore.db, id)
	return nil
}

添加一个构造函数,在函数中初始化一条数据,便于测试

// 构造函数
func NewUserStore() *UserStoreImpl {
	userStore := &UserStoreImpl{}
	userStore.db = map[int]*domain.User{}
	
	//添加测试数据
	user := new(domain.User)
	user.SetId(1)
	user.SetUsername("Lily")
	userStore.db[1] = user
	return userStore
}

实现接口

这里业务简单,省去了业务层编码,直接在接口存调用存储

func main() {
	http.HandleFunc("/users", usersHandler)
    http.ListenAndServe(":8000", nil)
}

func usersHandler(w http.ResponseWriter, req *http.Request) {
	if req.Method == "GET" {
		idStr := req.URL.Query().Get("id")
		if idStr=="" {
			w.Write([]byte("未传ID参数")); 
			return
		}
		userStore := store.NewUserStore()
		id,_ := strconv.Atoi(idStr)
		user,_ := userStore.Get(id)
		fmt.Print(user)
		b,_ := json.Marshal(user)
		w.Write(b)
	} else if req.Method == "POST" {
            //TODO 保存
	} else if req.Method == "PUT" {
            // TODO 修改
        } else if req.Method == "DELETE" {
            // TODO 删除
        } 
        
}

至此,运行程序,打开浏览器 访问 http://localhost:8000/users?id=1 即可查看用户信息

原文地址:https://www.cnblogs.com/ljgeng/p/9657303.html