"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > GoLang 구조체

GoLang 구조체

2024-11-08에 게시됨
검색:664

GoLang Structs

Golang에서 구조체는 데이터를 담는 간단한 컨테이너입니다.

  • 필드를 가질 수 있습니다
  • 메서드가 연결되어 있지 않습니다.
    • 별도로 정의되고 구조체 유형과 연관된 메서드입니다.

다음은 Ruby 및 GoLang에서 이에 상응하는 간단한 Book 클래스를 보여줍니다.

class Book
  attr_reader(:title, :author)

  def initalize(title, author)
    @title  = title
    @author = authoer
  end
end

# usage
book = Book.new('Title', 'Jon Snow')
// Equivalent to `class Book` in ruby
type Book struct {
  Title string,
  Author string
}

GoLang 유형 인스턴스화

복합 리터럴

Composite Literal은 한 단계로 초기화 복합 유형을 생성하는 구문입니다. 다음 유형을 인스턴스화할 수 있습니다.

  • 구조물
  • 배열
  • 슬라이스
  • 지도

여기서 변수 book에 새 Book 인스턴스를 할당합니다.

// Composite Literal
book := Book{
  Title: "Title",
  Author: "Author"
}

새 키워드 사용

더 긴 형식은 새 키워드를 사용하는 것입니다. 이는 Ruby에서 book = Book.new(..)

를 사용하여 클래스를 인스턴스화하는 방식과 유사합니다.

= 기호를 사용하여 책의 속성(예: 제목 및 저자)을 할당합니다.

// Using the `new` keyword
book        := new(Book)
book.Title  = "Book Title"
book.Author = "John Snow"

짧은 변수 선언 없이(:=)

첫 번째 예에서 := 기호를 사용했다는 점에 주목하세요.

변수를 선언하고 값을 할당하는 다음과 같은 장황한 방법에 대한 구문적 설탕입니다.

// Without Short Virable Declaration

// Example 1
var book Book // Declare variable `book` of type `Book`
book.Title = "Book Title" // Assign the value to book variable
book.Author = "John Snow"

// Example 2
var count int
count = 20

공장 기능

다음과 같은 작업이 필요할 때 구조체를 더 쉽게 초기화할 수 있도록 팩토리 패턴을 사용할 수도 있습니다.

  • 추가 로직 추가
  • 기본값 추가

책 제목과 저자 토큰의 각 첫 글자를 대문자로 만들고 싶다고 가정합니다.

// Factory Function
func NewBook(title string, author string) Book {
  return Book{
    Title: titlelise(title), // default logic to "titlelise" 
    Author: titlelist(author)
  }
}

func titlelise(str string) {
  caser := cases.Title(lanaguage.English)
  return caser.String(str)
}

구조체에 함수 연결하기

Ruby에서는 클래스 내에 함수를 정의하기만 하면 됩니다. 여기서는 책 제목 이름 작성자를 인쇄하기 위해 to_string()이라는 함수를 정의하고 있습니다.

class Book
  attr_reader(:title, :author)

  def initalize(title, author)
    @title  = title
    @author = authoer
  end

  # new function we added
  def to_string()
    put "#{title} by #{string}"
  end
end

GoLang에서는 stuct를 함수에 전달하여 함수를 "연결"합니다.

// Equivalent to `class Book` in ruby
type Book struct {
  Title string,
  Author string
}

// Attaching the function to the `struct`
func (book Book) ToString() string {
  return fmt.Sprintf("%s by %s", book.Title, book.Author)
}

// Usage
book := Book{
  Title: "Title",
  Author: "Author"
}

book.ToString()
// => Title by Author

설명:

func (book Book) ToString() string
토큰 설명
기능 함수 키워드
(책 책) Book 구조체 유형에 함수 연결
- book: 함수 내의 구조체에 액세스하기 위한 변수
- Book: 구조체 유형
ToString() 함수 이름
함수의 반환 유형
릴리스 선언문 이 글은 https://dev.to/nerdherd/golang-structs-3o0k?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3