MySQL의 비트 유형: Go의 사용자 정의 Bool과 완벽하게 일치
질문:
데이터베이스 테이블에서 비트(1) 유형 열이 있는 경우 Beego를 사용하여 이를 Go 유형에 매핑하려면 어떻게 해야 합니까? ORM?
답변:
Go에는 bit(1)에 대한 기본 제공 유형이 없으므로 권장되는 접근 방식은 사용자 정의 bool 유형을 만드는 것입니다.
MySQL Bit용 Custom Bool(1)
이 문제를 해결하려면 문제가 발생하면 bit(1) 열을 처리하기 위해 사용자 정의 bool 유형을 생성할 수 있습니다.
type BitBool bool // Value converts BitBool to a bitfield (BIT(1)) for MySQL storage. func (b BitBool) Value() (driver.Value, error) { if b { return []byte{1}, nil } else { return []byte{0}, nil } } // Scan converts the incoming bitfield from MySQL into a BitBool. func (b *BitBool) Scan(src interface{}) error { v, ok := src.([]byte) if !ok { return errors.New("bad []byte type assertion") } *b = v[0] == 1 return nil }
Go Struct에서의 사용
Go struct에서 사용자 정의 BitBool 유형을 사용하려면 , 해당 필드의 유형으로 선언하면 됩니다.
type BaseModel struct { Id string `orm:"pk";form:"id"` CreatedTime time.Time `orm:"auto_now_add;type(datetime)";form:"-"` UpdatedTime time.Time `orm:"auto_now;type(datetime)";form:"-"` Deleted BitBool `form:"-"` }
사용자 정의 BitBool 유형을 사용하면 다음이 가능합니다. MySQL의 bit(1) 유형을 비트 조작을 적절하게 처리하는 Go 유형으로 매핑하여 기본 bool 유형 사용으로 인해 발생하는 오류를 방지합니다.
위 내용은 Beego의 ORM을 사용하여 MySQL의 bit(1) 유형을 Go 유형으로 매핑하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!