Función que toma un tipo de interfaz como valor y puntero en Golang

Las funciones son generalmente el bloque de códigos o declaraciones en un programa que le brinda al usuario la capacidad de reutilizar el mismo código, lo que finalmente evita el uso excesivo de memoria, actúa como un ahorro de tiempo y, lo que es más importante, proporciona una mejor legibilidad del código. Básicamente, una función es una colección de declaraciones que realizan una tarea específica y devuelven el resultado a la persona que llama. Una función también puede realizar alguna tarea específica sin devolver nada.

Los punteros en el lenguaje de programación Go o Golang es una variable que se utiliza para almacenar la dirección de memoria de otra variable. Los punteros en Golang también se denominan variables especiales. Las variables se utilizan para almacenar algunos datos en una dirección de memoria particular en el sistema. La dirección de memoria siempre se encuentra en formato hexadecimal (comenzando con 0x como 0xFFAAF, etc.).

En el lenguaje Go, la interfaz es un tipo personalizado que se usa para especificar un conjunto de una o más firmas de métodos y la interfaz es abstracta, por lo que no puede crear una instancia de la interfaz. Pero se le permite crear una variable de un tipo de interfaz y esta variable se puede asignar con un valor de tipo concreto que tenga los métodos que requiere la interfaz. O, en otras palabras, la interfaz es una colección de métodos y también es un tipo personalizado.

Ahora puede crear una función que tome el tipo de interfaz como un valor y un puntero. Para entender este concepto, vea el siguiente ejemplo:

// Golang Function that takes an interface
// type as value and pointer
package main
  
import "fmt"
  
// taking an interface
type CoursePrice interface {
    show(int)
}
  
// taking a function that accept
// CoursePrice interface as an value
func show(cp CoursePrice, fee int) {
    cp.show(fee)
}
  
// taking a struct
type Dsa struct {
    Price int
}
  
func (c Dsa) show(fee int) {
    c.Price = fee
}
  
// taking a struct
type Placement struct {
    Price int
}
  
// function accepting a pointer
func (p *Placement) show(fee int) {
    p.Price = fee
}
  
// main function
func main() {
  
    first := Dsa{Price: 2499}
    second := Placement{Price: 9999}
  
    // calling the function
    show(first, 1999)
  
    // calling the function
    // by passing the address
    show(&second, 7999)
  
    fmt.Println("DSA Course Fee:", first.Price)
    fmt.Println("Placement100 Course Fee:", second.Price)
}

Producción:

DSA Course Fee: 2499
Placement100 Course Fee: 7999

Publicación traducida automáticamente

Artículo escrito por cse1604310056 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *