> 백엔드 개발 > Golang > GO의 데이터 구조를 초기화하는 방법에 대해 이야기해 보겠습니다. (코드 예제 포함)

GO의 데이터 구조를 초기화하는 방법에 대해 이야기해 보겠습니다. (코드 예제 포함)

藏色散人
풀어 주다: 2023-01-16 20:29:47
앞으로
3428명이 탐색했습니다.

이 글에서는 GO 언어에서 데이터 구조를 초기화하는 방법을 소개하겠습니다. GO에서는 데이터 구조를 초기화하는 2가지 키워드를 제공하여 어떻게 사용하는지 살펴보겠습니다~ 모두에게 도움이 되길 바랍니다.

golang을 사용하여 코딩하는 동안 데이터 구조를 어떻게 초기화합니까?

GO는 데이터 구조를 초기화하기 위해 2개의 키워드를 제공합니다

  • new
  • make

하지만 때로는 중괄호를 사용하여 직접 초기화하기도 합니다. 예:

name := []string{"xiaomotong","bob","marry"}
로그인 후 복사

위 상황에서 값은 ​​초기화 중에 채워야 할 데이터가 명확하게 정의되어 있습니다. 그러나 대부분의 경우 직장에서는 초기화 중에 데이터를 알 수 없습니다. . 메소드

make

make는 내장 데이터 구조를 초기화하는 데 주로 사용됩니다. make로 초기화할 수 있는 데이터 유형은 다음과 같습니다.

    map 해시 테이블
  • channel 채널
  • 예를 들어 초기화할 때 다음과 같이 작성할 수 있습니다.

슬라이스를 초기화하고 이 두 값 외에 len 값과 cap 값을 채웁니다. 슬라이스의 기본 데이터 구조에는 기본 배열에 대한 포인터도 있습니다.

    맵을 초기화하세요. 맵의 맨 아래 레이어는 hmap을 가리키는 구조 포인터입니다. 구조에 있는 xdm의 특정 멤버에 관심이 있다면, 내 역사적 기사를 읽을 수 있습니다
  • 채널 ch를 초기화하세요. 이 ch는 hchan을 가리키는 구조 포인터입니다. 자세한 내용은 내 역사적 기사를 읽어보세요
strs := make([]string, 0, 10)myMap := make(map[string]string, 10)ch := make(chan struct{}, 10)
로그인 후 복사
  • make의 소스 코드 설명을 보면 알 수 있습니다. make는 위의

    3가지 유형의 생성 및 초기화를 지원합니다.

    설명에 따르면 GO의 데이터 구조를 초기화하는 방법에 대해 이야기해 보겠습니다. (코드 예제 포함)make

    의 반환 값 유형이 채워진 매개 변수의 유형과 일치한다는 것을 알 수 있습니다. 슬라이스 유형을 채우면 반환 값은 다른 유형의 해당 반환 값을 채우는 것도 우리가 기대하는 것입니다. 유형에는 아무런 문제가 없습니다

    new

    make를 사용하여 데이터 구조를 초기화하는데 왜 new가 필요한가요?

    Careful Fat Fish는 앞에서 언급한 것처럼 make가 golang에서 제공하는 내장 데이터 구조를 초기화하는 데만 적합하다는 것을 알 수 있습니다. 사용자 정의 데이터 구조의 경우 아직 new

    을 사용하면 됩니다. care of things

    new로 데이터 구조를 초기화하는 것은 다음과 같이 작성할 수 있습니다:

    2명의 멤버, 나이, 이름으로 구조를 사용자 정의합니다.

      new를 사용하여 T를 초기화하고 구조에 대한 포인터를 반환합니다.
    type T struct{
        age int
        name string}func main(){
    
        t := new(T)
        fmt.Println("t.name == ",t.name)
        fmt.Println("t.age == ",t.age)}
    로그인 후 복사
  • 프로그램 실행 효과 다음과 같습니다:

    # go run main.got.name ==t.age ==  0
    로그인 후 복사
    물론 데이터 구조가 초기화되었지만 데이터는 모두 0 값입니다.

    물론 다음과 같이 작성할 수도 있습니다.

    func main(){
    
        a := new(int)
        fmt.Println("a == ",a)
        fmt.Println("*a == ",*a)}
    로그인 후 복사

    프로그램 실행 효과

    # go run main.goa ==  0xc420018078
    *a ==  0
    로그인 후 복사
    프로그램 실행 결과에 따르면 new는 포인터를 반환하고 이 포인터가 가리키는 메모리 주소의 해당 값은 이 유형의 0값

    임을 알 수 있습니다. 새로운 소스코드 설명

    golang 소스코드에 따르면 new 첫 번째 매개변수는 값이 아닌 데이터 타입이고, GO의 데이터 구조를 초기화하는 방법에 대해 이야기해 보겠습니다. (코드 예제 포함)new

    의 반환값은 매개변수에 따라 값이 0인 메모리를 할당하는 포인터이다. type

    따라서 위에서 본 new 의 데이터 구조, 인쇄된 데이터는 모두 해당 타입의 0 값입니다

    make 와 new 의 차이점

    마지막으로 make 와 make 의 차이점을 정리해 보겠습니다. new는 깊은 인상을 줍니다

    make는 내장 데이터 유형을 초기화하는 데에만 사용할 수 있습니다
    • slice
      • map
      • chan
      • new은 모든 유형의 데이터를 할당할 수 있습니다(사용자 정의 데이터 포함) 유형)

      make는
    • Type
    • 유형인 참조를 반환하고 new는

      *Type

      유형인 포인터를 반환합니다. 【관련 추천:
    • Go 비디오 튜토리얼

    위 내용은 GO의 데이터 구조를 초기화하는 방법에 대해 이야기해 보겠습니다. (코드 예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:learnku.com
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    최신 이슈
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿