Go 语言的常用特性包括以下几个方面(续):
-
- 方法:Go 语言支持面向对象的编程范式,但不使用类和继承的概念,而是使用结构体和接口来定义类型。结构体是一种聚合多个字段的数据类型,接口是一种抽象多个方法的数据类型。Go 语言使用
type关键字来定义结构体和接口。Go 语言可以为任意类型定义方法,方法是一种特殊的函数,它接受一个接收者作为第一个参数。方法可以实现接口,也可以重载运算符。例如:
- 方法:Go 语言支持面向对象的编程范式,但不使用类和继承的概念,而是使用结构体和接口来定义类型。结构体是一种聚合多个字段的数据类型,接口是一种抽象多个方法的数据类型。Go 语言使用
type Person struct {
name string
age int
}
func (p Person) SayHello() {
fmt.Println("Hello, I am", p.name, "and I am", p.age, "years old.")
}
type Animal interface {
Speak() string
}
type Dog struct {
name string
}
func (d Dog) Speak() string {
return "Woof, I am " + d.name
}
func (d Dog) String() string { fmt.Stringer 接口
return "A dog named " + d.name /
}
// 定义一个名为 Person 的结构体类型 // 定义一个名为 name 的字段,类型为 string // 定义一个名为 age 的字段,类型为 int // 定义一个名为 SayHello 的方法,接收者为 Person 类型 // 打印接收者的信息 // 定义一个名为 Animal 的接口类型 // 定义一个名为 Speak 的方法,返回值为 string 类型 // 定义一个名为 Dog 的结构体类型 // 定义一个名为 name 的字段,类型为 string // 定义一个名为 Speak 的方法,接收者为 Dog 类型,实现了 Animal 接口 // 返回狗的叫声和名字 // 定义一个名为 String 的方法,接收者为 Dog 类型,重载了 / 返回狗的描述
个人思考:
这是方法,可以用于结构体,有别于c、c++。
首先定义结构体type 名称 struct 大括号,内含有变量名称和类型。
然后定义方法func()括号中是变量名称和所属结构体类型名,函数方法名称(),返回值类型,大括号。
这样就完成了结构体的定义和相关方法的定义。