go11 方法

简介: go11 方法

go11 方法

声明新类型


关键字 type 可以用来声明新类型:


type celsius float64


var temperature celsius = 20


虽然 Celsius 是一种全新的类型,但是由于它和 float64 具有相同的行为和表示,所以赋值操作能顺利执行。


例如加法等运算,也可以像 float64 那样使用。


70fe09d3163f49529d0a8da120082421.png


为什么要声明新类型:极大的提高代码可读性和可靠性。

不同的类型是无法混用的。

通过方法添加行为


在 C#、Java 里,方法属于类。

在 Go 里,它提供了方法,但是没提供类和对象。

Go 比其他语言的方法要灵活。

可以将方法与同包中声明的任何类型相关联,但不可以是 int、float64 等预声明的类型进行关联。



231e6da460a242578d932ac5bf8162a0.png


上例中,celsius 方法虽然没有参数。但它前面却又一个类型参数的接收者。

每个方法可以有多个参数,但只能有一个接收者。

在方法体中,接收者的行为和其它参数一样。

方法声明图解:

方法调用

变量 . 方法()



2c185ef1aa61459cb5510bfa9c6e5265.png


目录
相关文章
|
4月前
|
存储 设计模式 Cloud Native
云原生系列Go语言篇-类型、方法和接口 Part 1
通过前面章节的学习,我们知道Go是一种静态类型语言,包含有内置类型和用户定义类型。和大部分现代编程语言一样,Go允许我们对类型关联方法。它也具备类型抽象,可以编写没有显式实现的方法。
51 0
|
5月前
|
Go
Go string bytes、strings、strconv和unicode包相关方法
Go string bytes、strings、strconv和unicode包相关方法
29 0
|
6月前
|
设计模式 算法 编译器
Go方法特性详解:简单性和高效性的充分体现2
Go方法特性详解:简单性和高效性的充分体现
36 0
|
7月前
|
SQL 关系型数据库 Go
Go语言微服务框架 - 12.ORM层的自动抽象与自定义方法的扩展
随着接口参数校验功能的完善,我们能快速定位到接口层面的参数问题;而应用服务的分层代码,也可以通过log的trace-id发现常见的业务逻辑问题。 但在最底层与数据库的操作,也就是对GORM的使用,经常会因为我们不了解ORM的一些细节,导致对数据的CRUD失败,或者没有达到预期效果。这时,我们希望能在ORM这一层也有一个通用的解决方案,来加速问题的排查。
45 0
|
3天前
|
存储 Go 开发者
【Go语言专栏】Go语言中的结构体与方法
【4月更文挑战第30天】Go语言中的结构体是聚合数据类型,用于自定义复杂类型。通过`type`和`struct`关键字定义结构体,包含多个不同类型的字段。结构体实例化后,使用点操作符访问字段。方法为结构体添加行为,定义时需指定接收者(值或指针)。方法调用同样使用点操作符。匿名结构体无需命名,嵌套结构体可构建复杂数据结构。选择值或指针接收者取决于是否需要修改结构体状态。理解并熟练运用结构体和方法是编写高效Go代码的关键。
|
7天前
|
Go 开发者
Golang深入浅出之-Go语言方法与接收者:面向对象编程初探
【4月更文挑战第22天】Go语言无类和继承,但通过方法与接收者实现OOP。方法是带有接收者的特殊函数,接收者决定方法可作用于哪些类型。值接收者不会改变原始值,指针接收者则会。每个类型有相关方法集,满足接口所有方法即实现该接口。理解并正确使用这些概念能避免常见问题,写出高效代码。Go的OOP机制虽不同于传统,但具有灵活性和实用性。
16 1
|
6月前
|
Cloud Native Go
GO语言初始化数据结构的方法你知道吗?
GO语言初始化数据结构的方法你知道吗?
|
2月前
|
设计模式 缓存 安全
一篇文章带你吃透Go语言的Atomic和Channel--实战方法
一篇文章带你吃透Go语言的Atomic和Channel--实战方法
29 0
|
4月前
|
编译器 Go
go语言第六章(结构体与方法)
go语言第六章(结构体与方法)
22 0
|
4月前
|
存储 Cloud Native Java
云原生系列Go语言篇-类型、方法和接口 Part 2
虽然Go并发(在并发一章讲解)是聚光灯下的宠儿,便Go设计中真正的明星是其隐式接口,也是Go中唯一的抽象类型。下面就来学习它的伟大之处。
50 0