La diferencia entre función y método en Golang

En Golang, existen algunas diferencias entre funciones y métodos.

Una función es un bloque de código autónomo que toma parámetros de entrada y devuelve un resultado. Se puede llamar desde cualquier lugar y no está vinculado a ninguna estructura o tipo en particular.

Los métodos son funciones asociadas con un tipo particular. Es parte de un tipo y se puede llamar a través de una instancia de ese tipo. Los métodos pueden acceder y manipular datos de ese tipo, y pueden modificarlos. Cuando se define un método, es necesario especificar el receptor (receptor), es decir, el tipo al que pertenece el método. El receptor puede ser un tipo de valor (como una estructura) o un tipo de puntero.

Las siguientes son algunas de las diferencias entre funciones y métodos:

  • Sintaxis: una definición de función no tiene receptor y una definición de método necesita especificar un receptor. Las definiciones de métodos anteponen el nombre de la función al tipo de receptor.
  • Método de llamada: las funciones se pueden llamar directamente desde cualquier lugar, mientras que los métodos solo se pueden llamar a través de instancias de tipos.
  • Acceso a datos: las funciones no pueden acceder directamente a datos de un tipo, mientras que los métodos pueden acceder y manipular datos de un tipo.
  • Modificación de datos: los métodos pueden modificar datos del tipo de receptor, mientras que las funciones no pueden modificar ningún dato.

A continuación se muestra un ejemplo que muestra en qué se diferencian las funciones y los métodos:

package main  
  
import "fmt"  
  
type Rectangle struct {
    
      
    width  float64  
    height float64  
}  
  
// 方法:计算矩形的面积  
func (r Rectangle) Area() float64 {
    
      
    return r.width * r.height  
}  
  
// 函数:计算两个数的和  
func Sum(a, b int) int {
    
      
    return a + b  
}  
  
func main() {
    
      
    // 调用方法  
    rect := Rectangle{
    
    width: 10, height: 5}  
    fmt.Println("矩形的面积:", rect.Area())  
  
    // 调用函数  
    sum := Sum(3, 5)  
    fmt.Println("两个数的和:", sum)  
}  

En este ejemplo, Area() es un método del tipo Rectángulo que se puede invocar en una instancia de rect. Sum() es una función y se puede llamar directamente.

Supongo que te gusta

Origin blog.csdn.net/wo541075754/article/details/131864351
Recomendado
Clasificación