Crear constructores en Golang
-
Utilice la función
init
para crear constructores en Golang -
Use la función
struct
para crear constructores en Golang
Go no es un lenguaje orientado a objetos en el mismo sentido que lo es Java. Los constructores no son una función de lenguaje estándar.
Al desarrollar programas Go, debe construir componentes modulares que estén débilmente vinculados entre sí. Este artículo abordará la creación de constructores en Golang usando diferentes funciones.
Utilice la función init
para crear constructores en Golang
No hay constructores predeterminados en Go, pero puede definir funciones para cualquier tipo. Crearemos constructores usando la función init
en este ejemplo.
package main
import "fmt"
type Thing struct {
Name string
Num int
}
func (t *Thing) Init(name string, num int) {
t.Name = name
t.Num = num
}
func main() {
t := new(Thing)
t.Init("Hello Boss!", 99)
fmt.Printf("%s: %d\n", t.Name, t.Num)
}
Producción :
Hello Boss!: 99
Use la función struct
para crear constructores en Golang
Estamos declarando el nombre y la edad del empleado utilizando la función struct
de este ejemplo.
package main
import "fmt"
type Employee struct {
Name string
Age int
}
func (e *Employee) Init(name string, age int) {
e.Name = name
e.Age = age
}
func main() {
emp := new(Employee)
emp.Init("Jay Singh", 23)
fmt.Printf("%s: %d\n", emp.Name, emp.Age)
}
Producción :
Jay Singh: 23
Otro ejemplo es el método constructor newUser
del ejemplo, que produce una nueva struct
de usuario. La función devuelve un puntero a la estructura recién creada.
package main
import "fmt"
type User struct {
firstName string
lastName string
email string
}
func newUser(firstName string, lastName string, email string) *User {
user := User{firstName, lastName, email}
return &user
}
func main() {
user := newUser("Jay", "Singh", "jayexamplesingh@gmail.com")
fmt.Println("firstName:", user.firstName)
fmt.Println("lastName:", user.lastName)
fmt.Println("email:", user.email)
}
Producción :
firstName: Jay
lastName: Singh
email: jayexamplesingh@gmail.com