GO语言基础教程15——结构体-方法和接收者

简介: Go语言的结构体没有构造函数,我们可以自己实现。

GO语言基础教程15——结构体-方法和接收者


GO语言基础教程15——结构体-方法和接收者


构造函数


Go语言的结构体没有构造函数,我们可以自己实现。


例如:

func newPerson(name, city string, age int8) *person {
  return &person{
    name: name,
    city: city,
    age:  age,
  }
}

调用构造函数

p := newPerson("likuis", "福建", 18)
fmt.Printf("%#v\n", p9) //&main.person{name:"likuis", city:"福建", age:18}


方法和接收者


Go语言中的方法(Method)是一种作用于特定类型变量的函数。这种特定类型变量叫做接收者(Receiver)。接收者的概念就类似于其他语言中的this或者 self


方法的定义格式如下:

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

例如:

//Person 结构体
type Person struct {
  name string
  age  int
}
//NewPerson 构造函数
func NewPerson(name string, age int) *Person {
  return &Person{
    name: name,
    age:  age,
  }
}
//Dream Person做梦的方法
func (p Person) Dream() {
  fmt.Printf("%s想吃饭\n", p.name)
}
func main() {
  p1 := NewPerson("likuis", 18)
  p1.Dream()
}

方法与函数的区别是,函数不属于任何类型,方法属于特定的类型。


指针类型接收者

func (p *Person) SetName(newName string) {
  p.age = newName
}

调用该方法:

func main() {
  p1 := NewPerson("likuis", 18)
  fmt.Println(p1.name) // likuis 
  p1.SetName("刘德华")
  fmt.Println(p1.name) // 刘德华
}

值类型接收者

func (p Person) SetAge(newAge int) {
  p.age = newAge
}
func main() {
  p1 := NewPerson("likuis", 18)
  fmt.Println(p1.age) // 18
  p1.SetAge(30)
  fmt.Println(p1.age) // 18
}

一般来说需要修改接收者中的值或者接收者是拷贝代价比较大的大对象时使用指针接收者。

相关文章
|
14天前
|
Go
go语言中的数据类型
go语言中的数据类型
13 0
|
20天前
|
存储 安全 Go
掌握Go语言:Go语言类型转换,无缝处理数据类型、接口和自定义类型的转换细节解析(29)
掌握Go语言:Go语言类型转换,无缝处理数据类型、接口和自定义类型的转换细节解析(29)
|
16小时前
|
编译器 Go 开发者
Go语言入门|包、关键字和标识符
Go语言入门|包、关键字和标识符
8 0
|
2天前
|
数据采集 存储 Go
使用Go语言和chromedp库下载Instagram图片:简易指南
Go语言爬虫示例使用chromedp库下载Instagram图片,关键步骤包括设置代理IP、创建带代理的浏览器上下文及执行任务,如导航至用户页面、截图并存储图片。代码中新增`analyzeAndStoreImage`函数对图片进行分析和分类后存储。注意Instagram的反爬策略可能需要代码适时调整。
使用Go语言和chromedp库下载Instagram图片:简易指南
|
4天前
|
API Go
使用Go语言通过API获取代理IP并使用获取到的代理IP
使用Go语言通过API获取代理IP并使用获取到的代理IP
|
5天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
14天前
|
存储 Java 编译器
go语言基础语法
go语言基础语法
|
JSON Kubernetes Java
Go基础:指针、Map、结构体
Go基础:指针、Map、结构体
457 0
Go基础:指针、Map、结构体
|
Go
Go基础:指针、Map、结构体
Go基础:指针、Map、结构体
2287 0
Go基础:指针、Map、结构体
|
20天前
|
Go 开发者
掌握Go语言:Go语言结构体,精准封装数据,高效管理实体对象(22)
掌握Go语言:Go语言结构体,精准封装数据,高效管理实体对象(22)

热门文章

最新文章