>백엔드 개발 >Golang >Go에서 선택적 문자열을 가장 잘 표현할 수 있는 방법은 무엇입니까?

Go에서 선택적 문자열을 가장 잘 표현할 수 있는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-20 06:01:09310검색

How Can I Best Represent Optional Strings in Go?

관용적인 Go: 선택적 문자열 표현

Go에 변형 유형이 없기 때문에 존재하는 값을 모델링하는 데 어려움이 있습니다. 또는 현재의 형태. 이는 특히 nil을 멤버로 허용할 수 없는 문자열과 관련이 있습니다.

선택적 문자열 모델링 옵션

  1. string: 문자열(string)에 대한 포인터를 사용하면 작동할 수 있지만 참조와 같은 작업이 어색해집니다. 문자열 리터럴.
  2. 래퍼: 문자열과 해당 현재 상태를 래퍼에 캡슐화하는 것은 실행 가능한 솔루션이지만 문자열만 사용한다는 목표에서 벗어납니다.
  3. 특정 Null 값이 있는 문자열:

    a. 빈 문자열(""): 빈 문자열을 null 요소로 지정하면 초기화 및 맵에 없는 값 처리가 편리해집니다.

    b. 잘못된 UTF-8 바이트 시퀀스: 빈 문자열이 유효한 경우 짧은 잘못된 UTF-8 바이트 시퀀스(예: "xff")를 사용하여 유효한 텍스트 문자열을 허용하면서 null 값을 나타낼 수 있습니다.

잘못된 UTF-8 바이트 사용 시퀀스

  1. null 값을 나타내기 위해 const Null = "xff"와 같은 상수를 정의합니다.
  2. 이 접근 방식은 빈 문자열과 유효한 텍스트를 모두 선택적 값으로 허용합니다. .
  3. utf8.ValidString() 함수를 사용하여 문자열이 유효한지 확인할 수 있습니다. 텍스트.

예:

const Null = "\xff"

func main() {
    fmt.Println(utf8.ValidString(Null)) // false

    s := Null
    fmt.Println([]byte(s)) // [255]
    fmt.Println(s == Null) // true
    s = "notnull"
    fmt.Println(s == Null) // false
}

위 내용은 Go에서 선택적 문자열을 가장 잘 표현할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.