前言: 本文是学习<<go语言程序设计>> -- 清华大学出版社(王鹏 编著) 的2014年1月第一版 做的一些笔记 , 如有侵权, 请告知笔者, 将在24小时内删除, 转载请注明出处!

1. 对象

  - 任意简单的内置数据类型

  - 任意复杂的结构体

  - 表示具体的事物 / 抽象的规则 / 计划 / 事件 等.

2. 对象的状态

  - 用数值来描述, 如长方体的长和宽等.

3. 对象的操作

  - 用于改变对象的状态, 操作就是对象的行为.

  - GO语言中称为Method(方法), Method 就是在 函数(function) 前面增加了一个接收者(Receiver)对象. 将操作和对象关联起来了.

    - 定义:   func (recv receiver_type) methodName(args)(rets){}    Receiver 可以是: 内置类型/自定义类型/结构体/指针类型

    - 多个Method可以同名, 只要接收者不同, 就是不同的Method.(类似于重载吧)

    - Method可以访问接收者的字段, 而不需要将字段作为参数传入Method, 就像在struct中访问字段一样.

    - 普通类型作为Receiver,是值传递;  指针类型作为Receiver, 将传递引用.

package main

import (
    "fmt"
    "math"
)

type rect struct {
    width  int
    height int
}
type circle struct {
    radius float32
}

func (recv rect) area() int {
    return recv.width * recv.height
}
func (recv circle) area() float32 {
    return recv.radius * recv.radius * math.Pi
}
func main() {
    r1 := rect{4, 3}
    r2 := rect{30, 15}
    fmt.Println(r1.area(), r2.area())
    c := circle{5}
    fmt.Println(c.area())
}
View Code

相关文章: