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은 여전히 유사한 작업을 수행하는 여러 가지 방법을 제공합니다. 그 중 일부는 다음과 같습니다.
가장 기본적인 방법은 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 연산자와 같은 것을 구현하는 간단한 방법이지만 대규모 컬렉션에서 요소를 찾을 때는 충분히 효율적이지 않을 수 있습니다.
세트의 요소가 정렬된 경우 정렬 및 이진 검색 알고리즘을 사용하여 요소를 찾을 수 있습니다. 예는 다음과 같습니다.
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"이 배열에 있는지 찾습니다.
정렬 및 이진 검색 사용은 요소가 정렬된 경우에만 적용 가능합니다. 설정된 요소가 무작위로 분산되면 효율성이 매우 낮을 수 있습니다.
맵에 키가 존재하는지 확인하고 싶은 경우에만 맵의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!