英文:
How to implement c++ template<T> in golang
问题
如何将这段cpp代码翻译成golang?
template<T> class CppTemp {
T a;
T* pa;
T foo(T &t);
};
template<T> T foo2(const T &t)
如上所示的cpp代码可以翻译成以下的golang代码:
package main
type GoTemp struct {
a T
pa *T
}
func (gt *GoTemp) foo(t *T) T {
// 在这里实现foo函数的逻辑
}
func foo2(t *T) T {
// 在这里实现foo2函数的逻辑
}
请注意,由于golang和cpp之间的语法和语义差异,翻译可能需要根据具体情况进行调整和修改。以上只是一个大致的翻译示例,具体实现可能需要根据代码的功能和需求进行进一步的调整。
英文:
How to translate this cpp code to golang ?
template<T> class CppTemp {
T a;
T* pa;
T foo(T &t);
};
template<T> T foo2(const T &t)
答案1
得分: 5
Go语言不支持模板或泛型。你可以采取以下三种方法:
-
在适用的地方使用非空接口
-
使用
go generate
生成代码 -
使用
interface{}
:type GoTemp struct { a interface{} } func (gt *GoTemp) foo(v interface{}) { // ... } func foo2(v interface{}) { // ... }
英文:
Go doesn't support templates or generics. There are three things you can do:
-
use non-empty interfaces where applicable
-
generate code with
go generate
-
use
interface{}
:type GoTemp struct { a interface{} } func (gt *GoTemp) foo(v interface{}) { // ... } func foo2(v interface{}) { // ... }
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论