首页 > 其他分享 >golang 有没有 类似 typescript 的 联合类型?

golang 有没有 类似 typescript 的 联合类型?

时间:2023-09-21 20:33:30浏览次数:36  
标签:typescript 有没有 float64 fmt Area 接口 golang 类型 Go

Go语言(Golang)不像TypeScript那样直接支持联合类型(Union Types)。在TypeScript中,联合类型允许一个变量具有多个不同的数据类型,而在Go中,通常使用接口(interfaces)和具体类型来处理类似的情况。以下是在Go中处理联合类型的一些方法:

  1. 使用接口:Go中的接口可以用于定义一组方法的契约,而不是特定的数据类型。您可以使用接口来表示多种类型的对象,然后根据实际情况使用不同的类型来实现这些接口。这类似于联合类型的概念。
type Shape interface {
    Area() float64
}

type Circle struct {
    Radius float64
}

func (c Circle) Area() float64 {
    return math.Pi * c.Radius * c.Radius
}

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func main() {
    var s Shape
    s = Circle{Radius: 5}
    fmt.Println(s.Area())

    s = Rectangle{Width: 3, Height: 4}
    fmt.Println(s.Area())
}
  1. 使用空接口和类型断言:Go中的空接口interface{}可以表示任何类型的值。您可以使用类型断言来检查和转换这些值,以便处理不同类型的数据。
func processValue(val interface{}) {
    switch v := val.(type) {
    case int:
        fmt.Println("This is an integer:", v)
    case string:
        fmt.Println("This is a string:", v)
    default:
        fmt.Println("Unknown type")
    }
}

func main() {
    processValue(42)
    processValue("Hello, World!")
}

这些方法允许您在Go中处理不同数据类型的值,但与TypeScript中的联合类型不同,Go更强调静态类型检查和类型安全。因此,在Go中,通常会更多地使用接口和类型断言来处理多态性,而不是使用联合类型。

标签:typescript,有没有,float64,fmt,Area,接口,golang,类型,Go
From: https://blog.51cto.com/M82A1/7556795

相关文章

  • 最简单的方式实现 Golang的级别日志
    lo.gopackageloimport("log""os")const(TRACEint=iotaDEBUGINFOWARNERRORFATAL)typeLevelLoggerstruct{levelintlogger*log.Logger}varl*LevelLoggerfuncinit(){......
  • Typescript 测试驱动开发 TDD (9)
    匹配器(Matchers) 1.toBeJest使用所谓的匹配器来将测试中的预期值与接收到的值进行匹配。让我们快速看一下其中一些匹配器,如下所示:1it("shouldmatchwithtoBe",()=>{2expect(1).toBe(2);3});在这里,我们使用toBe匹配器来测试值1是否与值2相同。显然,这个测......
  • Typescript 测试驱动开发 TDD (8)
    强制运行和跳过测试 (Forcingandskippingtests)在处理一个已经编写了多个测试的应用程序时,我们通常只想运行特定的测试或者一组特定的测试。这种操作被称为强制运行测试,因为我们要求整个测试套件只运行指定的测试。可以通过以下两种方式来实现:1describe("agroupoftest......
  • Typescript 测试驱动开发 TDD (7)
    分组测试(Groupingtests)在一个测试规范文件中,我们可能希望将我们的测试分组为逻辑集合。Jest使用describe函数来实现这个目的,如下所示的测试代码:1describe("agroupoftests",()=>{2test("firsttest",()=>{3expect("stringvalue").toEqual("......
  • Typescript 测试驱动开发 TDD (6)
    观察模式(Watchmode)Jest和其他测试框架一样,也可以在观察模式下运行。这意味着它会监视项目中的所有文件,并在任何文件更改时自动重新运行任何测试。让我们按照以下方式更新我们的package.json文件:{..."scripts":{"test":"jest--watchAll--verbose"......
  • 记录 umi4 ant design pro typescript 在 vscode 代码提示错误的问题
    原因是vscode使用的ts版本与项目不匹配。修复方法:在vscode拓展【左侧4个方框的图标】搜索typescript下载安装插件JavaScriptandTypeScriptNightly然后使用ctrl+shift+p调出命令,使用SelectTypeScriptversion命令选择项目应用的typescript版本。选择使用工作区版......
  • Typescript 测试驱动开发 TDD (5)
    ts-jestJest是一个JavaScript测试框架,因此它会在我们的项目中寻找JavaScript测试来运行。我们可以运行TypeScript编译器生成JavaScript文件,或者使用像ts-jest这样的框架。ts-jest是一个TypeScript到Jest的桥接工具,它将负责编译步骤和与Jest的集成。事实上,ts-je......
  • Typescript 测试驱动开发 TDD (4)
    JestJest是一个简单易配置且功能强大的JavaScript单元测试框架,它构建在流行的Jasmine框架之上。Jasmine已经存在很长时间了,是一个成熟、功能齐全且广泛使用的测试框架。Jest通过使配置更加容易,并提供丰富的额外功能来增强Jasmine。Jest还可以并发运行测试,这显著加快了测试套件运......
  • Typescript 测试驱动开发 TDD (1)
    在JavaScript开发的现代世界中,有许多不同的前端框架可供我们用来编写应用程序,从旧的框架如Backbone.js到较新的Angular、React和Vue等。这些框架通常使用模型视图控制器(MVC)设计模式或其变体之一,例如模型视图表现器(MVP)或模型视图视图模型(MVVM)。当将这组模式一起讨论时,它们被一些人......
  • typescript_typescript的下载与手动编译
    下载npminstall-gtypescript编译.ts文件为.js文件tsc./typescript/test1.ts上面这个命令会在test1.ts的所属目录中创建一个同名的test1.js文件......