You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go是否支持C++风格的非类型泛型参数?

Go是否支持非类型泛型参数?

截至Go 1.22版本,Go不支持非类型泛型参数——也就是像你在C++示例里那样,直接把整数这类具体值作为泛型参数的写法,在Go里是无法实现的。

Go 1.18引入的泛型仅支持类型参数,核心用来解决不同类型间的代码复用问题,并没有纳入非类型参数的设计,主要是为了避免语言复杂度过度提升。

如果需要实现类似“基于固定数值的逻辑复用”,可以用这些替代方案:

  • 最直接的方式:把数值作为函数参数传入
func myFunc(siz int) {
    // 这里写你的逻辑
}

// 调用时传入数值
myFunc(13)
  • 如果需要编译期确定数值以做性能优化,可以结合常量和go generate工具,提前生成对应数值的函数版本。

举个Go类型泛型的正确写法参考:

// 仅支持类型作为泛型参数
func myFunc[T any](val T) {
    // 逻辑实现
}

// 调用时指定类型
myFunc[int](13)

内容的提问来源于stack exchange,提问作者tangyao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:22:36