zoukankan      html  css  js  c++  java
  • go语言学习之指示器——方法作用的目标

    接收器——方法作用的目标

    接收器的格式如下:

    func (接收器变量 接收器类型) 方法名(参数列表) (返回参数) {
        函数体
    }

    对各部分的说明:

    • 接收器变量:接收器中的参数变量名在命名时,官方建议使用接收器类型名的第一个小写字母,而不是 self、this 之类的命名。例如,Socket 类型的接收器变量应该命名为 s,Connector 类型的接收器变量应该命名为 c 等。
    • 接收器类型:接收器类型和参数类似,可以是指针类型和非指针类型。
    • 方法名、参数列表、返回参数:格式与函数定义一致。


    接收器根据接收器的类型可以分为指针接收器、非指针接收器。两种接收器在使用时会产生不同的效果。根据效果的不同,两种接收器会被用于不同性能和功能要求的代码中

    // 指示器
    package main 
    
    import "fmt"
    
    type Point struct {
        x int
        y int
    }
    
    func (p *Point) X() int{
        return p.x
    }
    
    func (p *Point) Y() int {
        return p.y
    }
    
    func (p *Point) setX(x int) {
         p.x = x
    }
    
    func (p *Point) setY(y int)  {
         p.y = y
    }
    
    func (p Point) X1() int{
        return p.x
    }
    
    func (p Point) Y1() int {
        return p.y
    }
    
    func (p Point) setX1(x int) {
         p.x = x
    }
    
    func (p Point) setY1(y int)  {
         p.y = y
    }
    
    
    func main(){
        // 指针指示器
        // 指针类型的接收器由一个结构体的指针组成,更接近于面向对象中的 this 或者 self。
        // 由于指针的特性,调用方法时,修改接收器指针的任意成员变量,在方法结束后,修改都是有效的。
        point := new(Point)
        point.setX(10)
        point.setY(15)
        fmt.Println(point)
        
        // 非指针指示器
        // 当方法作用于非指针接收器时,Go 语言会在代码运行时将接收器的值复制一份。
        // 在非指针接收器的方法中可以获取接收器的成员值,但修改后无效。
        point1 := Point{1,2};
        point1.setX1(10)
        point1.setY1(100)
        fmt.Println(point1)
    }
  • 相关阅读:
    git Permissions 0777 for '/home/xxx/.ssh/id_rsa' are too open.
    Linux wc指令解析
    RK3288 开机动画旋转
    tp3.2 事务
    PHP实现动态获取函数参数的方法
    laravel 配置设置
    swoole 使用异步redis的前置条件
    php回调函数的概念及实例
    swoole 安装
    linux 源码安装PHP
  • 原文地址:https://www.cnblogs.com/xzlq/p/9963490.html
Copyright © 2011-2022 走看看