gpt4 book ai didi

methods - 在函数内部定义结构的方法

转载 作者:IT王子 更新时间:2023-10-29 01:26:03 26 4
gpt4 key购买 nike

我有这个代码

func baz() {
type mockDatabase struct{}

//
// More code
//
}

我想定义一个mockDatabase的方法,所以完整的代码是这样的:

func baz() {
type mockDatabase struct{}

func (m *mockDatabase) Foo() {
// Implement function here
}

//
// More code
//
}

我想这样做的原因是我正在将一个依赖项注入(inject)到一个函数中,我想创建一个“模拟对象”来注入(inject)到函数中(该函数将一个接口(interface)作为参数,模拟对象将实现接口(interface))。

我可以在外部创建结构,但在本地声明结构以减少命名空间困惑似乎更合乎逻辑,尤其是当这些模拟对象只使用一次时。我在这里错过了什么吗?在测试函数之外定义它是不是更好的做法,这样它就不长了?我应该在这里做什么?

最佳答案

惯用的 Go 将使用 package 作为命名空间。

package mock 

type MockDatabase struct {}

func (m *mockDatabase) Foo() {}

在主代码中,可以从包中调用

package main

import (
"path/to/mock"
)

var m = New(mock.MockDatabase)

func baz() {
m.Foo()
}

关于methods - 在函数内部定义结构的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com