Función como campo en la estructura de Golang

Una estructura o struct en Golang es un tipo definido por el usuario, lo que nos permite crear un grupo de elementos de diferentes tipos en una sola unidad. Cualquier entidad del mundo real que tenga algún conjunto de propiedades o campos se puede representar como una estructura. Como sabemos que en el lenguaje Go, la función también es un tipo definido por el usuario, por lo que puede crear un campo de función en la estructura Go. También puede crear un campo de función en la estructura Go usando una función anónima como se muestra en el Ejemplo 2.

Sintaxis:

type function_name func()
type strcut_name struct{
  var_name  function_name
}

Discutamos este concepto con la ayuda de los ejemplos:

Ejemplo 1:

// Go program to illustrate the function
// as a field in Go structure
package main
  
import "fmt"
  
// Finalsalary of function type
type Finalsalary func(int, int) int
  
// Creating structure
type Author struct {
    name      string
    language  string
    Marticles int
    Pay       int
  
    // Function as a field
    salary Finalsalary
}
  
// Main method
func main() {
  
    // Initializing the fields
    // of the structure
    result := Author{
        name:      "Sonia",
        language:  "Java",
        Marticles: 120,
        Pay:       500,
        salary: func(Ma int, pay int) int {
            return Ma * pay
        },
    }
  
    // Display values
    fmt.Println("Author's Name: ", result.name)
    fmt.Println("Language: ", result.language)
    fmt.Println("Total number of articles published in May: ", result.Marticles)
    fmt.Println("Per article pay: ", result.Pay)
    fmt.Println("Total salary: ", result.salary(result.Marticles, result.Pay))
}

Producción:

Author's Name:  Sonia
Language:  Java
Total number of articles published in May:  120
Per article pay:  500
Total salary:  60000

Ejemplo 2:

// Go program to illustrate the function
// as a field in Go structure
// Using anonymous function
package main
  
import "fmt"
  
// Creating structure
type Author struct {
    name      string
    language  string
    Tarticles int
    Particles int
    Pending   func(int, int) int
}
  
// Main method
func main() {
  
    // Initializing the fields
    // of the structure
    result := Author{
        name:      "Sonia",
        language:  "Java",
        Tarticles: 340,
        Particles: 259,
        Pending: func(Ta int, Pa int) int {
            return Ta - Pa
        },
    }
  
    // Display values
    fmt.Println("Author's Name: ", result.name)
    fmt.Println("Language: ", result.language)
    fmt.Println("Total number of articles: ", result.Tarticles)
      
    fmt.Println("Total number of published articles: ",
                                      result.Particles)
      
    fmt.Println("Pending articles: ", result.Pending(result.Tarticles,
                                                   result.Particles))
}

Producción:

Author's Name:  Sonia
Language:  Java
Total number of articles:  340
Total number of published articles:  259
Pending articles:  81

Publicación traducida automáticamente

Artículo escrito por ankita_saini 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 *