En Golang, las estructuras son contenedores simples para datos.
A continuación se muestran equivalentes simples de la clase Libro en Ruby y 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 }
Composite Literal es una sintaxis para crear e inicializar tipos compuestos en un solo paso. Podemos crear instancias de los siguientes tipos:
Aquí estamos asignando una nueva instancia de Libro a la variable libro
// Composite Literal book := Book{ Title: "Title", Author: "Author" }
La forma más larga es utilizar la nueva palabra clave. Esto sería similar a la forma en que crearíamos una instancia de una clase en Ruby con book = Book.new(..)
Asignaríamos los atributos del libro (es decir, Título y Autor) usando el signo =.
// Using the `new` keyword book := new(Book) book.Title = "Book Title" book.Author = "John Snow"
¿Notaste que usamos el símbolo := en el primer ejemplo?
Es azúcar sintáctico para la siguiente forma detallada de declarar una variable y asignarle un valor.
// 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
También podríamos usar el patrón de fábrica para que sea más fácil inicializar la estructura cuando lo necesitemos:
Suponiendo que quisiéramos que cada primer carácter del título del libro y los tokens de autor estén en mayúscula.
// 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) }
En Ruby, simplemente definiríamos una función dentro de la clase. Aquí, estamos definiendo una función llamada to_string() para imprimir el nombre del título del libro, autor.
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
En GoLang, "adjuntaríamos" la función pasando el stuct a la función.
// 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
Explicación de:
func (book Book) ToString() string
Simbólico | Descripción |
---|---|
función | palabra clave de función |
(libro Libro) | Adjuntando la función al tipo Estructura del libro - libro: variable para acceder a la estructura dentro de la función - Libro: tipo de la estructura |
ToString() | nombre de la función |
cadena | tipo de retorno de la función |
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3