Golang支持面向对象编程,支持基本的继承,封装,接口等基本概念,也很容易实现,但是Golang是一种松散的面向对象,约束远没有java,c++那么严格,Golang 可以用结构体来模拟类,并给结构体添加特定方法来实现面向对象的类,来看这样一个例子
我们实现这样一个Animal类(结构体),他有一些基本属性和函数(function)
package main
import "fmt"
type Animal struct { // 动物类的定义
name string
food string
age int
}
func (an *Animal) eat() {
fmt.Printf("I eat "+an.food+"\n") // 注意,此处带来一个对象的属性
}
func (an *Animal) run() {
fmt.Println("Every animal could run") // 此处没有带对象的任何属性
}
func main() {
var abstructAnimal *Animal // 空指针, 表达抽象的动物
var tiger *Animal = &Animal{name:"tiger",food:"meat"}
abstructAnimal.run()
tiger.run()
//abstructAnimal.eat() //compile success,but running throw an panic runtime error: invalid memory address or nil pointer dereference
tiger.eat()
/******* runn