English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Golang

Sentencias de control de Golang

Funciones y métodos de Golang

Estructuras de Golang

Cortes y arreglos de Golang

Cadenas (String) de Golang

Punteros de Golang

Interfaces de Golang

Concurrencia de Golang

Excepciones de Golang (Error)

Otras cosas de Golang

Métodos con nombre idéntico de Go

En el lenguaje Go, se permite crear dos o más métodos con el mismo nombre en el mismo paquete, pero estos métodos deben tenerDeben tener tipos diferentesEsta función no está disponible en las funciones de Go, lo que significa que no se permite crear métodos con el mismo nombre en el mismo paquete, de lo contrario, el compilador lanzará un error.

Sintaxis:

func(receptor_name_1 Type) método_name(parametro_list)(retorno_type){
    // Código
}
func(receptor_name_2 Type) método_name(parametro_list)(retorno_type){
    // Código
}

Vamos a discutir este concepto con un ejemplo:

Ejemplo1:

package main 
  
import "fmt"
  
//Crear estructuras
type student struct { 
    name string 
    branch string 
} 
  
type teacher struct { 
    language string 
    marks int
} 
  
//Métodos con el mismo nombre pero receptores de tipos diferentes
func (s student) show() { 
  
    fmt.Println("Nombre del Estudiante: ", s.name) 
    fmt.Println("Rama: ", s.branch) 
} 
  
func (t teacher) show() { 
  
    fmt.Println("Lenguaje:", t.language) 
    fmt.Println("Materiales del Estudiante: ", t.marks) 
} 
  
func main() { 
  
    // Inicializar valores de la estructura
    val1 := student{"Rohit", "EEE"} 
  
    val2 := teacher{"Java", 50} 
  
    //Llamar al método
    val1.show() 
    val2.show() 
}

Salida:

Nombre del Estudiante: Rohit
Rama: EEE
Lenguaje: Java
Materiales del Estudiante:  50

Instrucciones de uso:En el ejemplo anterior, tenemos dos métodos con el mismo nombre, es decirshow()pero los tipos de los receptores son diferentes. Aquí, el primeroshow()El método contiene un receptor de tipo s student, el segundoshow()El método contiene un receptor de tipo t teacher. Enmain()En la función, utilizamos las variables de estructura individuales para llamar a estos dos métodos. Si intenta usar receptores de tipos iguales para crear esteshow()Si se intenta crear este método con receptores de tipos iguales, el compilador lanzará un error.

Ejemplo2:

//Crear métodos con el mismo nombre
//Receptores de tipos no estructurados
package main 
  
import "fmt"
  
type value_1 string 
type value_2 int
  
//Crear funciones con el mismo nombre
//Receptores no estructurados de tipos diferentes
func (a value_1) display() value_1 { 
  
    return a + ".com"
} 
  
func (p value_2) display() value_2 { 
  
    return p + 298 
} 
  
func main() { 
  
    //Valor inicial 
    res1 := value_1("w3codebox) 
    res2 := value_2(234) 
  
    // Mostrar resultado
    fmt.Println("Result" 1: "", "res"1.display()) 
    fmt.Println("Result" 2: "", "res"2.display()) 
}

Salida:

Resultado 1:  oldtoolbag.com
Resultado 2: 532