跳到主要内容

Go 泛型最佳实践

· 阅读需 2 分钟
ahKevinXy

什么是泛型

泛型,又称为"参数多态",是一种允许你编写出可以处理不同数据类型(而非单一数据类型)的代码的程序设计范式。泛型有助于提高代码复用性,增加类型安全性,以及有时还能优化性能

如何使用泛型生成增删改查

package main

type Curd[T any] interface {

TableName() string
Get(id int64) (any, error) // id 获取
Create(*T) (int64, error) // 添加
GetList() ([]*T, error) // 获取列表
Delete(id int64) error // 删除
UpdateById(id int64) error // 更新
GetId() int64 // 获取ID
}

goland 快捷键 command + n 选择实现方法 选择对应CURD

实现方法

tab 选择 *Customer


type Customer struct {
}

func (c *Customer) TableName() string {
//TODO implement me
panic("implement me")
}

func (c *Customer) Get(id int64) (any, error) {
//TODO implement me
panic("implement me")
}

func (c *Customer) Create(t *Customer) (int64, error) {
//TODO implement me
panic("implement me")
}

func (c *Customer) GetList() ([]*Customer, error) {
//TODO implement me
panic("implement me")
}

func (c *Customer) Delete(id int64) error {
//TODO implement me
panic("implement me")
}

func (c *Customer) UpdateById(id int64) error {
//TODO implement me
panic("implement me")
}

func (c *Customer) GetId() int64 {
//TODO implement me
panic("implement me")
}