English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В языке Go разрешается создавать два или более методов с одинаковыми именами в одном пакете, но эти методы должны иметьНеобходимо иметь разные типы.Эта функция недоступна в функции Go, что означает, что вам не разрешается создавать методы с одинаковыми именами в одном пакете, и если вы пытаетесь сделать это, компилятор выбросит ошибку.
Грамматика:
func(reciver_name_1 Type) method_name(parameter_list)(return_type){ // Code } func(reciver_name_2 Type) method_name(parameter_list)(return_type){ // Code }
Давайте рассмотрим этот концепт на примере:
Пример1:
package main import "fmt" //Создание структуры type student struct { name string branch string } type teacher struct { language string marks int } //Названия методов одинаковы, но у них разные типы приемников func (s student) show() {}} fmt.Println("Имя студента:", s.name) fmt.Println("Факультет: ", s.branch) } func (t teacher) show() { fmt.Println("Язык:", t.language) fmt.Println("Оценки студента: ", t.marks) } func main() { //Инициализация значений структур val1 := student{Rohit, "EEE"} val2 := teacher{Java, 50} //Вызов методов val1.show() val2.show() }
Вывод:
Имя студента: Rohit Факультет: EEE Язык: Java Оценки студента: 50
Инструкции по использованию:В примере выше, у нас есть два метода с одинаковыми именами, то естьshow(),Но типы приемников разные. Здесь, первыйshow()Метод содержит приемника типа s student, второйshow()Метод содержит приемника типа t teacher. Вmain()В функции, мы используем переменные各自的 структурных типов для вызова этих двух методов. Если попытаться создать этотshow()Если создать метод с таким же именем, то компилятор выдаст ошибку.
Пример 2:
//Создание методов с одинаковыми именами //Неструктурные приемники package main import "fmt" type value_1 string type value_2 int //Создание функций с одинаковыми именами //Разные типы неструктурных приемников func (a value_1) display() value_1 { return a + ".com" } func (p value_2) display() value_2 { return p + 298 } func main() { //Инициализация значений res1 := value_1("w3codebox") res2 := value_2(234) // Печатать结果显示 fmt.Println("Результат 1: ", res1.display()) fmt.Println("Результат 2: ", res2.display()) }
Вывод:
Результат 1: oldtoolbag.com Результат 2: 532