Dev/Go

golang ~ string 의미

catchv 2025. 6. 25. 11:16
반응형

Go 언어에서 `type E interface { ~string }`와 같이 `~`(틸드) 기호가 붙은 형태는 **타입 집합(type set)**을 정의할 때 사용되는 문법입니다. 여기서 `~string`의 의미는 “기본 타입이 string인 모든 타입”을 의미합니다.
즉,
• `~string`은 string 타입을 기반으로 만들어진 모든 사용자 정의 타입까지 포함합니다.
• 예를 들어,

 

type MyString string

 

• 처럼 `MyString`이 `string`을 기반으로 정의되었다면, `MyString`도 `~string`에 포함됩니다.
이 문법은 Go 1.18부터 도입된 제네릭(generics) 및 **타입 제약(type constraints)**에서 주로 사용됩니다.
• `interface { ~string }`은 “string이거나 string을 기반으로 한 타입”만을 허용하는 제네릭 타입 제약을 의미합니다.
정리하면,
• `~T`는 “기본 타입(underlying type)이 T인 모든 타입”을 의미합니다.
• `interface { ~string }`은 “string과 string을 기반으로 한 모든 타입”을 제약합니다.
이 문법은 연산자나 산술 연산과는 관련이 없으며, 타입 제약에서만 사용됩니다.
(검색 결과에는 직접적인 설명이 없으나, Go 공식 문서와 제네릭 타입 제약에 대한 일반적인 설명을 바탕으로 작성하였습니다.)

 

`constraints.Ordered`는 Go 언어에서 제네릭 타입 파라미터의 **타입 제약(type constraint)**으로 사용되는 인터페이스입니다. 이 제약은 “비교 연산자 `<`, `<=`, `>`, `>=`를 사용할 수 있는 타입”만 허용합니다.

 

func Min[T constraints.Ordered](x, y T) T {
    if x < y {
        return x
    }
    return y
}

 

type Ordered interface {
    Integer | Float | ~string
}

반응형

'Dev > Go' 카테고리의 다른 글

windows powershell 에서 환경 변수를 설정해서 go 실행하는 방법  (0) 2024.10.29
golang 숫자 표시  (0) 2024.06.13
golang 문자열 포맷 스트링 tip  (0) 2024.06.13
golang Functional Options Pattern  (0) 2024.06.05
google Project IDX  (0) 2024.04.02