GORM Golang을 사용하여 사용자 정의 Set 데이터 유형 유지
제공된 코드 샘플은 GORM 라이브러리를 사용하여 사용자 정의 Set 데이터 유형을 유지하는 문제를 보여줍니다. 골랑에서. 사용자 정의 유형은 스레드가 안전하지 않으며 문자열 세트를 나타냅니다. GORM을 사용하여 이 Set 유형이 포함된 구조체를 MySQL에 유지하려고 하면 Set 유형이 MySQL에 대해 유효하지 않음을 나타내는 오류가 발생합니다.
이 문제를 해결하려면 사용자 정의에서 특정 메서드를 구현해야 합니다. 데이터베이스 상호 작용을 활성화하도록 유형을 설정합니다. 이러한 메서드는 다음과 같습니다.
이러한 메소드를 구현함으로써 GORM 라이브러리는 데이터 지속성 동안 사용자 정의 Set 유형을 효과적으로 처리할 수 있습니다. 다음은 제공된 threadUnsafeSet에 대해 이러한 메서드를 구현할 수 있는 방법에 대한 예입니다.
type threadUnsafeSet map[interface{}]struct{} func (set *threadUnsafeSet) Value() (driver.Value, error) { return json.Marshal(set), nil } func (set *threadUnsafeSet) Scan(value interface{}) error { switch value := value.(type) { case []byte: return json.Unmarshal(value, set) } return errors.New("unrecognized value type") }
Value() 메서드는 threadUnsafeSet를 JSON 인코딩 문자열로 변환하는 반면 Scan() 메서드는 JSON을 역정렬화합니다. 문자열을 threadUnsafeSet으로 다시 보냅니다.
이러한 메소드를 사용하면 사용자 정의 Set 데이터 유형을 GORM과 함께 데이터용으로 효과적으로 사용할 수 있습니다. 끈기. 사용 중인 데이터베이스의 특정 요구 사항에 따라 Value() 및 Scan() 메서드를 구현하는 것이 중요합니다.
위 내용은 Golang에서 GORM을 사용하여 사용자 정의 세트 데이터 유형을 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!