1 Star 0 Fork 0

ryjer / go-generic

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

go-generic 泛型定义

介绍

go 1.18+ 的泛型类型定义,提供常见go机器类型在数学下的分类定义。

以便于通过清晰的类型分类实现逻辑清晰的泛型定义

分层定义结构

1. 数字包number定义

数字包中提供了标准的数学数字的定义,其中包括以下类型

数字类型 全称 简称
自然数 NaturalNumber N
整数 Integer Z
有理数 RationalNumber Q
实数 RealNumber R
复数 ComplexNumber C

你可以使用以上常见泛型类型的全称或简称来声明泛型类型,例如下面的使用说明中对有理数类的引用

使用说明

1. 下载本包

使用以下命令下载本包,本包同时在github 和 gitee上提供

go get gitee.com/ryjer/go-generic

或者从 github 下载

go get github.com/ryjer/go-generic

以上命令会下载最新版本的包,将其写入依赖文件 go.mod 中。同时锁定版本,如果你想更新包到最新版本或者指定版本的话,可以使用-u参数选项。具体可以参考下面的步骤3

2. 在 import 块中导入本包

下载完本包后,就可以在你的包中调用了。

像下面这样在对应的包中引用本仓库下的对应包,例如数字包 number。下面的例子使用了改包中定义的有理数类型RationalNumber

package main

import (
    "fmt"
    "gitee.com/ryjer/go-generic/number"
)

func add[T number.RationalNumber](a, b T) (sum T) {
    return a + b
}

func main() {
    fmt.Printf("3 + 5 = %v\n", add[int](3, 5))
}

对于常用的定义包,通常建议另外起一个短一些的缩写或别名,例如将 number 包重命名为 num,数字包也定义了有理数集的缩写Q来指代可商的有理数

package main

import (
    "fmt"
    num "gitee.com/ryjer/go-generic/number"
)

func add[T num.Q](a, b T) (sum T) {
    return a + b
}

func main() {
    fmt.Printf("3 + 5 = %v\n", add[int](3, 5))
}

3. 更新包

上面的过程会锁定你当时下载的包的版本,如果你想更新包的版本,可以使用go get -u命令

go get -u gitee.com/ryjer/go-generic

此命令也可以更新到指定版本,你可以查阅官方手册

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
MIT License Copyright (c) 2022 Ryjer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

go 1.18+ 的泛型类型定义,提供常见go机器类型在数学下的分类定义。 通过调用具有清晰分类的类型,实现更准确的定义 展开 收起
Go
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/ryjer/go-generic.git
git@gitee.com:ryjer/go-generic.git
ryjer
go-generic
go-generic
master

搜索帮助