gpt4 book ai didi

go - type 和 type = 有什么区别

转载 作者:数据小太阳 更新时间:2023-10-29 03:39:01 33 4
gpt4 key购买 nike

我是 Golang 的新手。抱歉,我仍然对以下两者之间的区别感到困惑:

type <Name> <dataType>

type <Name> = <dataType>

这是一个例子:

package main

import "fmt"

func main() {
var (
strWord Word
strText Text
)
strWord = "gopher"
strText = "golang"

fmt.Printf("strWord = %s, Type of Value = %T\n", strWord, strWord)
fmt.Printf("strText = %s, Type of Value = %T\n", strText, strText)

}

type Word string

type Text = string

输出

strWord = gopher, Type of Value = main.Word
strText = golang, Type of Value = string

那么,两者之间应该什么时候使用呢?

最佳答案

第一个是类型声明,第二个是类型别名

类型声明

文档:https://golang.org/ref/spec#Type_declarations

这允许您创建一个新的不同类型 <Name> , 基础类型 <datatype> .

你可以这样定义:

type Password string

然后重新实现 String()它的方法,这样它就不会被意外打印出来。

func (p Password) String() string {
return "<redacted>"
}

类型别名

类型别名主要用于迭代重构,其中将一种类型从一个包移动到另一个包会造成太大的变化/破坏太多东西。

本文解释了它的一些用例:

https://talks.golang.org/2016/refactor.article

但它本质上允许您将一种类型用作另一种。

package mypackage
type Foo struct {}


package other
type Bar = mypackage.Foo

您现在可以使用 other.Barmypackage.Foo可互换地。它们是同一类型,但名称不同。而类型声明是类型。

关于go - type <Name> <dataType> 和 type <Name> = <dataType> 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51549586/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com