> 백엔드 개발 > Golang > Go의 GORM 라이브러리에서 'Unable to use type string as sql.NullString' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있나요?

Go의 GORM 라이브러리에서 'Unable to use type string as sql.NullString' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있나요?

Linda Hamilton
풀어 주다: 2024-11-06 15:43:02
원래의
560명이 탐색했습니다.

Why does the error

"Unable to use type string as sql.NullString" 오류 이해

Go에서 gorm.Model은 다음 작업을 위한 기능을 제공합니다. SQL을 사용하는 데이터베이스. GORM을 사용하여 데이터베이스 모델을 생성할 때 해당 SQL 데이터 유형과 일치하도록 데이터 유형을 적절하게 선언해야 합니다. sql.NullString으로 선언된 필드에 문자열 값을 할당하려고 하면 "유형 문자열을 sql.NullString으로 사용할 수 없습니다." 오류가 발생합니다.

sql.NullString: A Struct, Not a String

sql.NullString 유형은 문자열 유형 자체가 아니라 구조체입니다. 이는 String(실제 문자열 값)과 Valid(문자열 값이 유효한지 또는 NULL인지를 나타내는 부울)의 두 필드로 구성됩니다.

sql.NullString을 올바르게 초기화

sql.NullString 값을 올바르게 초기화하려면 String 및 Valid 필드가 적절하게 설정된 sql.NullString 구조체를 제공하세요. 예:

<code class="go">db.Create(&Day{
    Nameday:     "Monday",
    Dateday:     "23-10-2019",
    Something:   sql.NullString{String: "a string goes here", Valid: true},
    Holyday:      false,
})</code>
로그인 후 복사

대안: Null 허용 문자열 유형 정의

또는 sql.Scanner 및 드라이버를 구현하여 사용자 정의 null 허용 문자열 유형을 정의할 수 있습니다. Valuer 인터페이스. null 바이트를 활용하면 NULL 값을 알릴 수 있습니다.

<code class="go">type MyString string

const MyStringNull MyString = "\x00"

// Implement driver.Valuer to convert to database value
func (s MyString) Value() (driver.Value, error) {
    if s == MyStringNull {
        return nil, nil
    }
    return []byte(s), nil
}

// Implement sql.Scanner to convert from database value
func (s *MyString) Scan(src interface{}) error {
    // Handle different types
    switch v := src.(type) {
    case string:
        *s = MyString(v)
    case []byte:
        *s = MyString(v)
    case nil:
        *s = MyStringNull
    }
    return nil
}</code>
로그인 후 복사

이 접근 방식을 사용하면 다음과 같이 사용자 정의 null 허용 문자열 유형을 사용할 수 있습니다.

<code class="go">db.Create(&Day{
    Nameday:     "Monday",
    Dateday:     "23-10-2019",
    Something:   "a string goes here", // implicitly converted to MyString
    Holyday:      false,
})</code>
로그인 후 복사

참고: 사용자 정의 nullable 문자열 유형에 입력된 문자열 값을 할당할 때 명시적 변환이 필요할 수 있습니다.

위 내용은 Go의 GORM 라이브러리에서 'Unable to use type string as sql.NullString' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿