Home  >  Article  >  Backend Development  >  Does golang support methods with the same name?

Does golang support methods with the same name?

青灯夜游
青灯夜游Original
2022-12-08 19:29:265497browse

Golang supports methods with the same name. The Go language allows the creation of two or more methods with the same name in the same package, but the receivers of these methods must have different types; Note that this feature is not available in Go functions, which means that users are not allowed to use the same method in the same package. Create a method with the same name in the package, the compiler will throw an error if you try to do so.

Does golang support methods with the same name?

The operating environment of this tutorial: Windows 7 system, GO version 1.18, Dell G3 computer.

Go method with the same name

In the Go language, it is allowed to create two or more methods with the same name in the same package, but The receivers of these methods must be of different types. This feature is not available in Go functions, which means you are not allowed to create a method with the same name in the same package, and the compiler will throw an error if you try to do so.

Grammar:

func(reciver_name_1 Type) method_name(parameter_list)(return_type){
    // Code
}
func(reciver_name_2 Type) method_name(parameter_list)(return_type){
    // Code
}

Let us discuss this concept with the help of an example:

Example 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("Branch: ", s.branch) 
} 
  
func (t teacher) show() { 
  
    fmt.Println("Language:", t.language) 
    fmt.Println("Student Marks: ", t.marks) 
} 
  
func main() { 
  
    // 初始化结构体的值
    val1 := student{"Rohit", "EEE"} 
  
    val2 := teacher{"Java", 50} 
  
    //调用方法
    val1.show() 
    val2.show() 
}

Output:

Does golang support methods with the same name?

# Usage Instructions: In the above example, we have two methods with the same name, show(), but the type of receiver is different. Here, the first show() method contains a receiver of type s student, and the second show() method contains a receiver of type t teacher. In the main() function, we call these two methods with the help of their respective structure variables. If you try to create this show() method with a receiver of the same type, the compiler will throw an error.

Example 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("nhooo") 
    res2 := value_2(234) 
  
    // 打印显示结果
    fmt.Println("Result 1: ", res1.display()) 
    fmt.Println("Result 2: ", res2.display()) 
}

Output:

Does golang support methods with the same name?

For more programming related knowledge, please visit: programmingvideo! !

The above is the detailed content of Does golang support methods with the same name?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn