⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Go泛型:类型参数与约束

理解Go 1.18引入的泛型语法,编写可复用的类型安全函数与数据结构。 · 难度:入门 · +15XP

泛型简介

泛型允许函数和类型使用类型参数,避免为每种类型重复编写代码。Go泛型基于类型参数和约束(constraint)实现。

基本语法

类型参数写在函数名后的方括号中:

func MaxT comparable T {
    if a > b {
        return a
    }
    return b
}

注意:comparable是内置约束,允许使用 == 和 !=,但不支持 > 或 <。比较大小需使用 constraints.Ordered(Go 1.21+ 内置)。

自定义约束

使用接口定义约束:

type Number interface {
    ~int | ~float64
}

func SumT Number T { var total T for _, v := range slice { total += v } return total }

泛型类型

可以定义泛型结构体:

type Stack[T any] struct {
    items []T
}

func (s *Stack[T]) Push(item T) { s.items = append(s.items, item) }

练习提示

实现一个泛型函数 FilterT any bool) []T,返回所有满足条件的元素。注意不要修改原切片。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 142 篇
0 完成
🔥 0