关于Go 语言基础语法和常用特性解析(第五节)| 青训营

82 阅读2分钟

Go 语言的常用特性包括以下几个方面(续):

    • 方法:Go 语言支持面向对象的编程范式,但不使用类和继承的概念,而是使用结构体和接口来定义类型。结构体是一种聚合多个字段的数据类型,接口是一种抽象多个方法的数据类型。Go 语言使用 type 关键字来定义结构体和接口。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()括号中是变量名称和所属结构体类型名,函数方法名称(),返回值类型,大括号。

这样就完成了结构体的定义和相关方法的定义。