>백엔드 개발 >Golang >Golang 함수의 맵, 슬라이스, 구조체 및 인터페이스 유형을 사용하는 방법

Golang 함수의 맵, 슬라이스, 구조체 및 인터페이스 유형을 사용하는 방법

PHPz
PHPz원래의
2023-05-17 08:02:071107검색

Golang은 Google에서 개발한 오픈 소스 프로그래밍 언어로 정적 타이핑 및 가비지 수집 메커니즘을 사용하고 동시 프로그래밍을 지원합니다. 함수는 Golang의 중요한 구성 요소이며 맵, 슬라이스, 구조체 및 인터페이스는 함수에서 일반적으로 사용되는 데이터 유형입니다. 이 기사에서는 Golang에서 이러한 데이터 유형의 사용을 소개합니다.

1. 맵 유형

map은 키-값 쌍 데이터 구조입니다. Golang에서는 사용이 매우 간단합니다. 예는 다음과 같습니다.

package main

import "fmt"

func main() {
    m := make(map[string]int)
    m["apple"] = 1
    m["banana"] = 2
    m["orange"] = 3
    fmt.Println(m)
}

위 예에서는 먼저 make 함수를 사용하여 빈 맵을 만든 다음 키-값 쌍을 맵에 순서대로 추가합니다. 마지막으로 fmt 패키지의 println 함수를 사용하여 맵이 출력됩니다.

make 함수를 사용하여 맵을 생성하는 것 외에도 아래와 같이 리터럴을 사용하여 비어 있지 않은 맵을 생성할 수도 있습니다.

package main

import "fmt"

func main() {
    m := map[string]int{"apple": 1, "banana": 2, "orange": 3}
    fmt.Println(m)
}

아래와 같이 변수를 선언할 때 맵을 함께 선언할 수도 있습니다.

package main

import "fmt"

func main() {
    var m map[string]int
    m = make(map[string]int)
    m["apple"] = 1
    m["banana"] = 2
    m["orange"] = 3
    fmt.Println(m)
}

물론, 맵에 키-값 쌍이 없으면 아래와 같이 삭제 기능을 사용하여 삭제할 수 있습니다.

package main

import "fmt"

func main() {
    m := make(map[string]int)
    m["apple"] = 1
    m["banana"] = 2
    m["orange"] = 3
    delete(m, "banana")
    fmt.Println(m)
}

2. 슬라이스 유형

슬라이스(Slice)는 또는 추가할 수 있는 동적 배열입니다. 언제든지 요소를 삭제하세요. 예는 다음과 같습니다.

package main

import "fmt"

func main() {
    s := make([]string, 3)
    s[0] = "apple"
    s[1] = "banana"
    s[2] = "orange"
    s = append(s, "grape")
    fmt.Println(s)
}

위 예에서는 make 함수를 사용하여 요소 유형이 문자열이고 길이가 3인 슬라이스를 만듭니다. 그런 다음 슬라이스에 3개의 요소를 추가하고 마지막으로 추가 기능을 사용하여 슬라이스에 새 요소를 추가했습니다.

물론, 아래와 같이 리터럴을 사용하여 비어 있지 않은 슬라이스를 만들 수도 있습니다.

package main

import "fmt"

func main() {
    s := []string{"apple", "banana", "orange"}
    s = append(s, "grape")
    fmt.Println(s)
}

아래와 같이 변수를 선언할 때 슬라이스를 함께 선언할 수도 있습니다.

package main

import "fmt"

func main() {
    var s []string
    s = make([]string, 3)
    s[0] = "apple"
    s[1] = "banana"
    s[2] = "orange"
    s = append(s, "grape")
    fmt.Println(s)
}

3. 여러 유형의 데이터를 저장할 수 있는 사용자 정의 복합 유형입니다. 예는 다음과 같습니다.

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{"Tom", 18}
    fmt.Println(p)
}

위 예에서는 type 키워드를 사용하여 Person이라는 구조체 유형을 만들었습니다. 그런 다음 유형이 Person인 변수 p를 만들고 여기에 값을 할당합니다.

또한 아래와 같이 구조체 포인터를 사용하여 구조체 유형의 필드에 액세스할 수도 있습니다.

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    p := &Person{"Tom", 18}
    p.Name = "Jerry"
    fmt.Println(p)
}

4. 인터페이스 유형

인터페이스는 모든 유형을 나타내는 데 사용할 수 있는 추상 유형입니다. 예는 다음과 같습니다.

package main

import "fmt"

type Animal interface {
    Eat()
}

type Cat struct {
    Name string
}

func (c *Cat) Eat() {
    fmt.Printf("%s is eating
", c.Name)
}

func main() {
    var a Animal
    a = &Cat{"Tom"}
    a.Eat()
}

위 예에서는 type 키워드를 사용하여 Eat 메서드가 하나만 있는 Animal이라는 인터페이스 유형을 만들었습니다. 그런 다음 type 키워드를 사용하여 Animal 유형의 Eat 메서드를 구현하는 Cat이라는 구조체 유형을 만듭니다. 마지막으로, Animal 유형의 변수 a를 생성하고 이를 Cat 유형의 변수에 할당합니다. a의 Eat 메소드를 호출하면 Cat이 먹고 있다는 문장이 출력됩니다.

또한 아래와 같이 유형 어설션을 사용하여 변수가 인터페이스를 구현하는지 확인할 수도 있습니다.

package main

import "fmt"

type Animal interface {
    Eat()
}

type Cat struct {
    Name string
}

func (c *Cat) Eat() {
    fmt.Printf("%s is eating
", c.Name)
}

func main() {
    var a Animal
    a = &Cat{"Tom"}
    _, ok := a.(*Cat)
    fmt.Println(ok)
}

위 예에서는 type 키워드를 사용하여 Animal이라는 인터페이스 유형을 만들었습니다. 메서드는 하나만 있습니다. 먹다. 그런 다음 type 키워드를 사용하여 Animal 유형의 Eat 메서드를 구현하는 Cat이라는 구조체 유형을 만듭니다. 마지막으로, Animal 유형의 변수 a를 생성하고 이를 Cat 유형의 변수에 할당합니다. 우리는 유형 어설션을 사용하여 가 Cat 유형을 구현하고 true를 출력하는지 여부를 결정합니다.

위 내용은 Golang 함수의 맵, 슬라이스, 구조체 및 인터페이스 유형을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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