GoLang Structs

WBOY
풀어 주다: 2024-08-30 06:41:06
원래의
406명이 탐색했습니다.

GoLang Structs

In Golang, structs are simple containers for data.

  • can have fields
  • no methods attached to them
    • methods defined separately and associated with a struct type.

The following show a simple Book class equivalents in Ruby and GoLang.

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 }
로그인 후 복사

Instantiating GoLang type

Composite Literal

Composite Literal is syntax to create an initialise composite types in one step. We can instantiate the following types:

  • structs
  • arrays
  • slices
  • maps

Here we are assigning a new Book instance to the variable book

// Composite Literal book := Book{ Title: "Title", Author: "Author" }
로그인 후 복사

Using new keyword

The longer form is to use the new keyword. This would be similar to the way we would instantiate a class in Ruby with book = Book.new(..)

We would assign the attributes of the book (i.e. Title and Author) using = sign.

// Using the `new` keyword book := new(Book) book.Title = "Book Title" book.Author = "John Snow"
로그인 후 복사

Without Short Variable Declaration (:=)

Notice that we used the symbol := in the first example?

It's syntactic sugar for the following verbose way of declaring a variable and assigning it a value.

// 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

We could also use the factory pattern to make it easier when initialising the struct when we need to:

  • add additional logic
  • add default values

Assuming we would want to make each first character of the book's title and author tokens to be capitalised.

// 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) }
로그인 후 복사

Attaching a function to a struct

In Ruby, we would simply define a function within the class. Here, we are defining a function called to_string() to print the book title name author.

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
로그인 후 복사

In GoLang, we would "attach" the function by passing in the stuct to the function.

// 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
로그인 후 복사

Explanation of:

func (book Book) ToString() string
로그인 후 복사
Token Description
func function keyword
(book Book) Attaching the function to the type Book struct
- book: variable to access the struct within the function
- Book: type of the struct
ToString() name of the function
string return type of the function

위 내용은 GoLang Structs의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!