相关疑难解决方法(0)

用类型参数替换接口参数有什么好处?

定义一个接口类型来输入参数,如下所示:

func CallByteWriterGen[W io.ByteWriter](w W, bytes []byte) {
  _ = w.WriteByte(bytes[0])
}
Run Code Online (Sandbox Code Playgroud)

...通过字典导致额外的指针取消引用(使用 AX 传递):

MOVQ 0x10(AX), DX // <-- extra pointer dereference 
MOVQ 0x18(DX), DX
MOVZX 0(CX), CX
MOVQ BX, AX
MOVL CX, BX
CALL DX
Run Code Online (Sandbox Code Playgroud)

仅使用接口参数可能无法实现哪些好处,如下所示:

func CallByteWriter(w io.ByteWriter, bytes []byte) {
  _ = w.WriteByte(bytes[0])
}
Run Code Online (Sandbox Code Playgroud)

generics interface go type-parameter

2
推荐指数
1
解决办法
1301
查看次数

标签 统计

generics ×1

go ×1

interface ×1

type-parameter ×1