Go 구조체에서 Nil 값과 빈 값 구별
Go에서는 nil 값을 구별하는 것이 어려울 수 있습니다(즉, never 집합) 및 비어 있거나 빈 값(예: 빈 문자열)입니다. 이러한 구별은 데이터베이스 또는 사용자 입력의 데이터를 처리할 때 매우 중요합니다.
문제:
다음 Go 구조체를 고려하세요.
type Organisation struct { Category string Code string Name string }
사용자가 범주 필드를 설정하거나 빈 문자열로 저장하지 않은 경우 이 값이 누락된 값을 나타내는지 아니면 빈 사용자 선택을 나타내는지 확인하는 것이 중요합니다.
해결책:
한 가지 접근 방식은 포인터 필드를 사용하는 것입니다.
type Organisation struct { Category *string Code *string Name *string }
포인터 필드에서 nil 값은 설정되지 않은 필드를 나타내고, 빈 문자열이 있는 nil이 아닌 값은 빈 선택을 나타냅니다.
데이터베이스 처리:
Go에서 문자열 유형의 0 값은 빈 문자열입니다. 따라서 표준 문자열 유형을 사용하여 설정되지 않은 문자열 필드와 빈 문자열 필드를 구별하는 것은 불가능합니다. 데이터베이스 통합의 경우:
예:
다음은 sql.NullString:
<code class="go">type Organisation struct { Category sql.NullString Code string Name string } // Check if Category is set and not NULL if organisation.Category.Valid && organisation.Category.String != "" { // Category was set and has a value } else { // Category is either unset or NULL }</code>이 접근 방식을 사용하면 설정되지 않은 문자열 값과 빈 문자열 값을 구별하여 데이터베이스 작업에서 데이터를 적절하게 처리할 수 있습니다.
위 내용은 Go 구조체에서 Nil 값과 빈 값을 구별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!