>백엔드 개발 >Golang >golang이 없습니다

golang이 없습니다

WBOY
WBOY원래의
2023-05-16 09:27:07458검색

Golang은 매우 인기 있는 오픈 소스 프로그래밍 언어로, 웹 개발이든 백엔드 서비스든 다양한 시나리오에서 사용할 수 있으며 광범위한 애플리케이션을 보유하고 있습니다. 그러나 Golang에는 Python이나 SQL과 같은 언어에는 공통 연산자가 없습니다. 연산자가 없기 때문에 프로그래밍에 어떤 영향을 미칠까요? 이 기사에서는 이 주제를 살펴보고 in 연산자를 구현하는 다른 방법을 소개합니다.

무엇이 들어있나요?

in은 다양한 프로그래밍 언어에서 사용할 수 있는 범용 연산자입니다. 컬렉션이나 배열에 값이 존재하는지 확인하는 데 자주 사용됩니다. 예를 들어 Python에서는 in을 사용하여 숫자가 목록에 있는지 확인할 수 있습니다.

if x in [1, 2, 3]:
    print('x is in the list')

위 코드에서 x 값이 1, 2 또는 3 중 하나이면 "x is in the 목록" .

Golang의 슬라이스와 맵

Golang에서 슬라이스는 자동으로 확장되거나 축소될 수 있는 동적 배열입니다. 슬라이스 요소는 아래 첨자(0부터 시작)를 통해 액세스할 수 있습니다. 예를 들어, 다음은 슬라이스의 예입니다.

numbers := []int{1, 2, 3, 4, 5}

위 코드에서 숫자는 5개의 정수를 포함하는 슬라이스입니다. 세 번째 요소에 액세스하려면 다음 코드를 사용할 수 있습니다.

fmt.Println(numbers[2])

출력 결과는 다음과 같습니다.

3

마찬가지로 Golang의 map도 키와 값을 하나씩 매핑하는 매우 일반적인 데이터 구조입니다. 키 값으로 액세스됩니다. 예를 들어 맵의 예는 다음과 같습니다.

ages := map[string]int{
    "Alice": 31,
    "Bob":   34,
    "Cindy": 27,
}

위 코드에서 볼 수 있듯이 age는 문자열을 정수로 매핑하는 맵입니다. 예를 들어 Bob의 나이를 찾으려면 다음 코드를 사용할 수 있습니다.

fmt.Println(ages["Bob"])

출력은 다음과 같습니다.

34

위는 Golang에서 일반적으로 사용되는 컬렉션 유형입니다. 이러한 유형은 많은 상황에서 유용하지만 in 연산자가 없으면 프로그래밍에 약간의 불편을 초래할 수 있습니다.

Alternatives

in 연산자가 없지만 Golang은 여전히 ​​유사한 작업을 수행하는 여러 가지 방법을 제공합니다. 그 중 일부는 다음과 같습니다.

  1. for 루프 사용

가장 기본적인 방법은 for 루프를 사용하여 컬렉션을 반복하고 원하는 요소를 찾는 것입니다. 예를 들어 숫자 3이 다음 목록에 있는지 확인하려면

numbers := []int{1, 2, 3, 4, 5}

다음 코드를 사용할 수 있습니다.

for _, number := range numbers {
    if number == 3 {
        fmt.Println("3 is in numbers")
        break
    }
}

여기에서는 범위 키워드와 _blank 식별자가 슬라이스의 모든 요소를 ​​반복하는 데 사용됩니다.

마찬가지로 맵에 키가 있는지 확인하려면 다음 코드를 사용할 수 있습니다.

ages := map[string]int{
    "Alice": 31,
    "Bob":   34,
    "Cindy": 27,
}

for name, age := range ages {
    if name == "Bob" {
        fmt.Printf("Bob's age is %d
", age)
        break
    }
}

이 코드는 연령의 모든 키-값 쌍을 반복하고 키가 "Bob"과 같은지 찾습니다.

for 루프를 사용하는 것은 in 연산자와 같은 것을 구현하는 간단한 방법이지만 대규모 컬렉션에서 요소를 찾을 때는 충분히 효율적이지 않을 수 있습니다.

  1. 정렬 및 이진 검색 사용

세트의 요소가 정렬된 경우 정렬 및 이진 검색 알고리즘을 사용하여 요소를 찾을 수 있습니다. 예는 다음과 같습니다.

numbers := []int{1, 2, 3, 4, 5}
sort.Ints(numbers)

if i := sort.SearchInts(numbers, 3); i < len(numbers) && numbers[i] == 3 {
    fmt.Println("3 is in numbers")
}

이 코드는 sort.Ints를 사용하여 배열을 정렬한 다음 sort.SearchInts를 사용하여 이진 검색을 수행하여 배열에 3이 있는지 찾습니다.

마찬가지로, sort.SearchStrings를 사용하여 지도의 키를 정렬하고 이진 검색을 수행하는 것도 가능합니다. 예:

names := []string{"Alice", "Bob", "Cindy"}
sort.Strings(names)

if i := sort.SearchStrings(names, "Bob"); i < len(names) && names[i] == "Bob" {
    fmt.Println("Bob is in names")
}

이 코드는 sort.Strings를 사용하여 문자열 배열을 정렬한 다음 sort.SearchStrings를 사용하여 이진 검색을 수행하여 "Bob"이 배열에 있는지 찾습니다.

정렬 및 이진 검색 사용은 요소가 정렬된 경우에만 적용 가능합니다. 설정된 요소가 무작위로 분산되면 효율성이 매우 낮을 수 있습니다.

  1. 맵의 0 값을 사용하세요

맵에 키가 존재하는지 확인하고 싶은 경우에만 맵의 0 값을 사용할 수 있습니다. 0 값은 지정된 키가 맵에 존재하지 않는 경우 해당 유형에 대해 0 값을 반환합니다. 예:

ages := map[string]int{
    "Alice": 31,
    "Bob":   34,
    "Cindy": 27,
}

if ages["Bob"] != 0 {
    fmt.Printf("Bob's age is %d
", ages["Bob"])
}

이 코드는 지도에 "Bob" 키가 있는지 확인하고, 있으면 Bob의 나이를 출력합니다.

그러나 이 방법은 몇 가지 문제를 일으킬 수 있습니다. 키에 해당하는 값이 원래 0인 경우 프로그램은 키가 존재하지 않는다고 잘못 생각할 수 있기 때문입니다. 따라서 이 방법은 맵의 값이 0이 아닌 경우에만 작동합니다.

결론

Golang에는 연산자가 내장되어 있지 않지만 for 루프, 정렬 및 이진 검색, 맵의 0 값을 사용하여 비슷한 기능을 얻을 수 있습니다. 특정 시나리오에 따라 적절한 방법을 선택하면 코드를 더 효율적이고 읽기 쉽고 유지 관리하기 쉽게 만들 수 있습니다.

위 내용은 이 글에서 소개한 내용입니다. 독자들이 Golang의 in 연산자 부족 문제를 더 깊이 이해할 수 있기를 바랍니다.

위 내용은 golang이 없습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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