0
respostas

problema com scan quando mysql retorna valor NULL

Model

type ProdutoCor struct {
    Id          int32
    Codigo          string
    Descricao       string
    FkFornecedor    Cadastro
    CorPredominante string
    CorSegundaria   string
}

func ListarProdutoCorA() []ProdutoCor {
    db := dbs.Conn("Mysql")
    sql := fmt.Sprintf("SELECT Id, Codigo, Descricao , Fk_Fornecedor , CorPredominante, CorSegundaria FROM PRODUTOCOR")
    cores := []ProdutoCor{}
    rs, err := db.Query(sql)
    if err != nil {
        panic(err.Error())
    }
    for rs.Next() {
        c := ProdutoCor{}
        rs.Scan(&c.Id, &c.Codigo, &c.Descricao, &c.FkFornecedor, &c.CorPredominante, &c.CorSegundaria)

        cores = append(cores, c)

    }
    return cores
}

func ListarProdutoCorB() []ProdutoCor {
    db := dbs.Conn("Mysql")
    sql := fmt.Sprintf("SELECT Id, Codigo, Descricao , Fk_Fornecedor , CorPredominante, CorSegundaria FROM PRODUTOCOR")
    cores := []ProdutoCor{}
    rs, err := db.Query(sql)
    if err != nil {
        panic(err.Error())
    }
    for rs.Next() {
        c := ProdutoCor{}
        err := rs.Scan(&c.Id, &c.Codigo, &c.Descricao, &c.FkFornecedor, &c.CorPredominante, &c.CorSegundaria)
        if err != nil {
            panic(err.Error())
           }
        cores = append(cores, c)

    }
    return cores
}

Tentando obter dados pela funcao ListarProdutoCorA, quando scan chega em uma coluna que possui valor NULO, sistema não trava porem ele pula todas as colunas a seguir e começar scan no proximo registro. tentando obter dados pela função ListarProdutoCorB sistema encerra com seguinte erro : ** Error: sql: Scan error on column index 4: unsupported Scan, storing driver.Value type into type string **

como devo resolver esses problemas, sendo que esses colunas pode vir nulo?