亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

Golang 菜鳥(niǎo)教程

Golang 控制語(yǔ)句

Golang 函數(shù) & 方法

Golang 結(jié)構(gòu)體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項(xiàng)

Go 同名方法

在Go語(yǔ)言中,允許在同一包中創(chuàng)建兩個(gè)或多個(gè)具有相同名稱(chēng)的方法,但是這些方法的接收者必須具有不同的類(lèi)型。該功能在Go函數(shù)中不可用,這意味著不允許您在同一包中創(chuàng)建相同名稱(chēng)的方法,如果嘗試這樣做,則編譯器將拋出錯(cuò)誤。

語(yǔ)法:

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

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

讓我們借助示例來(lái)討論這個(gè)概念:

范例1:

package main 
  
import "fmt"
  
//創(chuàng)建結(jié)構(gòu)體
type student struct { 
    name   string 
    branch string 
} 
  
type teacher struct { 
    language string 
    marks    int
} 
  
//名稱(chēng)相同的方法,但有不同類(lèi)型的接收器
func (s student) show() { 
  
    fmt.Println("學(xué)生姓名:", s.name) 
    fmt.Println("Branch: ", s.branch) 
} 
  
func (t teacher) show() { 
  
    fmt.Println("Language:", t.language) 
    fmt.Println("Student Marks: ", t.marks) 
} 
  
func main() { 
  
    // 初始化結(jié)構(gòu)體的值
    val1 := student{"Rohit", "EEE"} 
  
    val2 := teacher{"Java", 50} 
  
    //調(diào)用方法
    val1.show() 
    val2.show() 
}

輸出:

學(xué)生姓名: Rohit
Branch:  EEE
Language: Java
Student Marks:  50

用法說(shuō)明:在上面的示例中,我們有兩個(gè)相同的名稱(chēng)方法,即show(),但接收器的類(lèi)型不同。這里,第一個(gè)show()方法包含s student類(lèi)型的接收者,第二個(gè)show()方法包含t teacher類(lèi)型的接收者。在main()函數(shù)中,我們借助各自的結(jié)構(gòu)體變量來(lái)調(diào)用這兩種方法。如果嘗試使用相同類(lèi)型的接收器創(chuàng)建此show()方法,則編譯器將拋出錯(cuò)誤。

范例2:

//創(chuàng)建相同名稱(chēng)的方法
//非結(jié)構(gòu)類(lèi)型的接收器
package main 
  
import "fmt"
  
type value_1 string 
type value_2 int
  
//創(chuàng)建具有相同名稱(chēng)的函數(shù)
//不同類(lèi)型的非結(jié)構(gòu)接收器
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) 
  
    // 打印顯示結(jié)果
    fmt.Println("Result 1: ", res1.display()) 
    fmt.Println("Result 2: ", res2.display()) 
}

輸出:

Result 1:  (cainiaoplus.com)
Result 2: 532