Go - 기본이 아닌 데이터 유형의 사용 사례
소개
Go 시리즈 7부에 오신 것을 환영합니다. 이전 파트(6부): 맵 및 구조체가 무엇인지, 생성, 추가, 삭제 등과 같은 다양한 작업을 수행할 수 있는 방법을 살펴보았습니다. 여기에서는 이를 통해 반복할 수 있는 방법과 기본이 아닌 데이터 유형의 사용 사례를 살펴보겠습니다.
기본이 아닌 데이터 유형 반복
배열, 슬라이스 및 맵은 유사한 유형의 값을 모은 일종의 모음입니다. 이러한 각 컬렉션을 살펴보고 일부 계산을 수행하거나 값을 업데이트하려는 상황이 많이 있을 수 있습니다. 우리가 무엇을 하든지 전체 컬렉션을 살펴보는 것이 여기서 주목해야 할 포인트입니다. 이를 위해 루프를 사용합니다. 루프에 대한 자세한 내용을 아직 확인하지 않은 경우 이 루프 문서를 다시 방문하세요.
일반 for 루프를 사용하여 반복
0부터 컬렉션 길이까지 "for"루프를 실행하고 인덱스 연산자를 사용하여 컬렉션 내의 각 항목에 대해 작업을 수행합니다.
슬라이스의 모든 항목을 줄 바꿈에 인쇄하는 프로그램
package main
import "fmt"
func main() {
arr := []string{"one", "two", "three", "four"}
for i := 0; i < len(arr); i++ {
fmt.Println(arr[i])
}
}
산출:
비슷한 방식으로 배열을 반복할 수 있습니다. 그러나 맵의 경우 이러한 반복 방법은 맵의 키가
int
유형인 경우에만 가능합니다. int
유형이 아니면 인덱스 연산자 내에서 정수 인덱스를 사용할 수 없습니다.배열의 모든 항목을 추가하는 프로그램
package main
import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
sum := 0
for i := 0; i < len(arr); i++ {
sum = sum + arr[i]
}
fmt.Println("Sum = ", sum)
}
산출:
for-each 루프를 사용하여 반복
이제 맵의 경우 일반 "for"루프를 사용하여 반복하는 것이 항상 가능하지 않은 이유를 알았습니다. 지도가 항상
int
키를 가지고 있다고 보장하지 않고 일반 "for"루프를 사용하여 반복하는 동안 정수 값만 제공하기 때문입니다.for-each 루프를 사용하면 이 문제를 해결할 수 있습니다. 배열 또는 슬라이스와 함께 for-each 루프를 사용하면 위치와 값인 2개의 값을 제공합니다. 맵과 함께 for-each 루프를 사용하면 키와 값인 2개의 값을 다시 제공합니다.
이를 사용하는 구문은
for <pos/key>, <value> := range collection { }
입니다.문자열-문자열 맵에서 문자열로 결합된 키와 값을 인쇄하는 프로그램
package main
import "fmt"
func main() {
mapp := make(map[string]string)
mapp["one"] = "1"
mapp["two"] = "2"
mapp["three"] = "3"
for key, value := range mapp {
fmt.Println(key + value)
}
}
산출:
슬라이스의 위치와 값을 나란히 인쇄하는 프로그램
package main
import "fmt"
func main() {
arr := []int{23, 52, 745, 13}
for pos, val := range arr {
fmt.Printf("%v -> %v \n", pos, val)
}
}
산출:
이것이 배열, 슬라이스 및 맵과 같은 모든 컬렉션을 반복할 수 있는 방법입니다.
기본이 아닌 데이터 유형이 유용한 실제 시나리오
기본이 아닌 데이터 유형 및 반복의 복잡한 예
import "fmt"
type person struct { // defining a struct
name string
city string
}
func main() {
register := make(map[int]person) // map of int key and person value type
register[5463715] = person{name: "Ram", city: "Ayodhya"}
register[2385928] = person{name: "Sita", city: "Mithila"}
register[1432545] = person{name: "chiranjeevi", city: "Bangalore"}
for id, person := range register {
fmt.Printf("%v having id %v lives in %v. \n", person.name, id, person.city)
}
}
산출:
결론
그게 다야. 다음 글에서는 defer, panic, recover가 무엇인지 알아보겠습니다. 거기서 만나자.
Go lang에 대한 자세한 내용은 곧 제공될 예정이며 저를 팔로우하여 확인하세요. 이 기분이 좋았다면 좋아요를 누르고 공유하세요.
연결하자: Showwcase
Reference
이 문제에 관하여(Go - 기본이 아닌 데이터 유형의 사용 사례), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vchiranjeeviak/go-use-cases-of-non-primitive-datatypes-1m3h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)