在 Go 中将接口转换为具体类型

Jay Singh 2022年4月22日
在 Go 中将接口转换为具体类型

Go 语言的接口与其他语言的接口不同。接口是 Go 语言中的一种类型,用于表示一个或多个方法签名的集合。

它是抽象的;因此,你不能构造它的实例。但是,你可以建立一个接口类型变量,可以为它分配一个包含接口所需方法的具体类型值。

或者,换一种说法,接口既是一组方法,也是一个自定义类型。

本教程将演示如何在 Go 中将接口转换为具体类型。

在 Go 中将接口转换为具体类型

.(type) 运算符对于将接口类型对象转换为具体类型很有用。类型可实现的方法签名的集合构成了一个接口。

在这个例子中,我们创建了一个 Person 接口类型对象。我们将 Jay Singh 作为 Person 添加到接口对象中,编写一个将对象从接口类型转换为具体类型的方法,访问接口对象类型的数据,并显示我们的结果。

package main

import "fmt"

type Person struct {
    firstName string
    lastName  string
}

func main() {
    person := Person{
        firstName: "Jay",
        lastName:  "Singh",
    }

    printIfPerson(person)
}

func printIfPerson(object interface{}) {
    person, ok := object.(Person)

    if ok {
        fmt.Printf("Hello %s!\n", person.firstName)
    }
}

输出:

Hello Jay!

相关文章 - Go Conversion