分享一个 Golang Go语言中的方法调用姿势
package main
import “fmt”
type a int
func (a) A() {
fmt.Println(“a”)
}
func main() {
var method = interface{ A() }.A
var aa a = 1
method(aa)
}
其中 method 的类型是 func(interface{A()})
暂时不清楚这个操作的意义在哪
分享一个 Golang Go语言中的方法调用姿势
更多关于分享一个 Golang Go语言中的方法调用姿势的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Golang 不懂。
动态语言里面,可以“裁剪”方法。
以动态性很高的 Ruby 为例:可以通过 method 获得任意对象方法的指针。
方法本质上就是可以被复用的逻辑。如果方法可以被“裁剪” 就可以在需要他的地方使用。非常灵活。
https://www.v2ex.com/t/712577
不就是这种调用方法吗,记得在 V2EX 里被问了不止一次了
看样子像是:类方法如果不是通过对象实例调用,则首个参数作为对象实例,其他一些语言有类似的
不是,你这能编译通过么?
interface { A() } 这里面 A 是哪来的
我的,有意思,是临时定义了一个 interface
var IA interface {
A()
}
var ai IA
var method = ai.A
(有一说一,第一次见这种用法, 有点意思 https://go.dev/play/p/Qrabk1b7WI3
interface.a 相当于
func (impl interface{A()}){
impl.A()}
在Golang(Go语言)中,方法调用是一种非常常见的操作,它允许你通过接收者(receiver)来调用绑定到特定类型(包括结构体、指针等)的函数。以下是一些关键的方法和调用姿势:
-
值接收者的方法:
type Rectangle struct { Width, Height float64 } func (r Rectangle) Area() float64 { return r.Width * r.Height } rect := Rectangle{Width: 3, Height: 4} fmt.Println(rect.Area()) // 输出 12
-
指针接收者的方法: 使用指针接收者可以修改接收者指向的值。
func (r *Rectangle) Scale(factor float64) { r.Width *= factor r.Height *= factor } rect.Scale(2) fmt.Println(rect.Area()) // 输出 96
-
方法调用的简写: Go支持通过点操作符
.
直接调用绑定到类型的方法。 -
接口中的方法调用: 接口定义了方法集,任何实现了这些方法的类型都可以赋值给接口变量,并通过接口变量调用方法。
type Shape interface { Area() float64 } var s Shape = rect fmt.Println(s.Area()) // 输出 96
这些方法和调用姿势展示了Go语言中方法调用的灵活性和强大功能,无论是值接收者还是指针接收者,都能很好地满足不同的编程需求。希望这些示例能帮助你更好地理解Go语言中的方法调用。