Go语言的函数、方法和接口

函数

  • 在Go语言中,函数是第一类对象,我们可以将函数保持到变量中。具名函数是匿名函数的一种特例。
  • 当匿名函数引用了外部 作用域中的变量时就成了闭包函数,闭包函数是函数式编程语言的核心。
  • defer 语句延迟执行了一个匿名函数。因为这个匿名函数捕获了外部函数的 局部变量 ,这种函数我们一般叫闭包。
  • 传参:
    Go语言中,如果以切片为参数调用函数时,有时候会给人一种参数采用了传引用的 方式的假象:因为在被调用函数内部可以修改传入的切片的元素。
    其实,任何可以 通过函数参数修改调用参数的情形,都是因为函数参数中显式或隐式传入了指针参数。
    函数参数传值的规范更准确说是只针对数据结构中固定的部分传值,例如字符串或切片对应结构体中的指针和字符串长度结构体传值,但是并不包含指针间接指向的内容。

方法

方法是绑定到一个具体类型的特殊函数,Go语言中的方法是依托于类型的,必须在编译时静态绑定。

接口

  • 接口定义了方法的集合,这些方法依托于运行时的接口对象,因此接口对应的方法是在运行时动态绑定的。
  • Go语言的接口类型是延迟绑定,可以实现类似虚函数的多态功能。
  • Go语言中,对于基础类型(非接口类型)不支持隐式的转换,我们无法将一 个 int 类型的值直接赋值给 int64 类型的变量,也无法将 int 类型的值赋值给 底层是 int 类型的新定义命名类型的变量。Go语言对基础类型的类型一致性要求 可谓是非常的严格,但是Go语言对于接口类型的转换则非常的灵活。对象和接口之间的转换、接口和接口之间的转换都可能是隐式的转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InterestingFigure

迈克 Let's Go

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值