How to implement c++ template<T> in golang

huangapple go评论88阅读模式
英文:

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&lt;T&gt; class CppTemp {
    T  a;
    T* pa;
    T foo(T &amp;t);
};

template&lt;T&gt; T foo2(const T &amp;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{}) {
          // ...
      }
    

huangapple
  • 本文由 发表于 2016年11月23日 14:51:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/40757832.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定