0%

有时候开发的时候用不止用一种语言,goland 的优势就不是很大了,恰到周围有很多同事也在用 vscode 开发 go,就想迁移试试。

谷歌的 Gemini 已对外开放,虽然完全比不上他宣传的那么叼,但不妨碍我们尝试把玩。 本文的目的是能够在本地调通 Gemini 的 api 接口

要换主力机,记录一下换机过程。因为想对自己的电脑掌控度高一点,因此选择重新配置,没有使用苹果的数据导入功能。

工作中遇到一个问题,结构体包含接口类型的成员时,在反序列化的时候会报错。

// Task 接口类型
type Task interface {
    Exec() error
}

// TaskA Task接口的实现类A
type TaskA struct {
    A string `json:"a"`
}

func (ta *TaskA) Exec() error {
    fmt.Println("TaskA Exec")
    return nil
}

// TaskB Task接口的实现类B
type TaskB struct {
    B string `json:"b"`
}

func (tb *TaskB) Exec() error {
    fmt.Println("TaskB Exec")
    return nil
}

// MixedStruct 反序列化目标结构体
type MixedStruct struct {
    Id   uint64 `json:"id"`
    Task Task   `json:"task"`
}

小伙看到同事写的Gorm黑魔法,逐渐不淡定了。

开发过程中,看到同事的代码写了这么一段:

db = db.Session(&gorm.Session{Context: db.Statement.Context}).FirstOrCreate(&entity)
if db.Error !=nil{
    return components.ErrorDbInsert.WrapPrintf(db.Error, "Insert error, entity:%s", utils.ToJson(entity))
}
if db.RowsAffected == 0 {
    return components.ErrorAlreadyExist
}

使用monkey对函数进行打桩单测的时候,发现打桩函数没有生效。

习惯直接使用IDE的可视化的rundebug功能进行跑单测,没有关注到具体执行的命令。