Golang type assertion

后端 未结 2 1164
挽巷
挽巷 2021-01-07 19:13

I have created a type Role based off string, and I am now trying to get it to work with the database driver by implementing the Valuer and Scanner interfaces



        
2条回答
  •  无人及你
    2021-01-07 19:41

    Here is working code for the first function:

    func (r *Role) Scan(value interface{}) error {
        *r = Role(value.(string))
        return nil
    }
    

    Although you may wish to use s, ok := value.(string) and return an error for !ok instead of panic-ing.

    The signature for the a driver.Valuer is not what you gave but:

    func (r Role) Value() (driver.Value, error) {
        return string(r), nil
    }
    

    Note this doesn't handle or produce NULL values.

    Playground

提交回复
热议问题