type使用场景
1.定义结构体
// 定义商标结构 | |
//将Brand定义为如下的结构体类型 | |
type Brand struct { | |
} | |
// 为商标结构添加Show()方法 | |
func (t Brand) Show() { | |
} |
2.作别名
在 Go 1.9 版本之前定义内建类型的代码是这样写的: | |
type byte uint8 | |
type rune int32 | |
而在 Go 1.9 版本之后变为: | |
type byte = uint8 | |
type rune = int32 |
区分类型别名与类型定义
// 将NewInt定义为int类型 | |
type NewInt int | |
// 将int取一个别名叫IntAlias | |
type IntAlias = int | |
func main() { | |
// 将a声明为NewInt类型 | |
var a NewInt | |
// 查看a的类型名 | |
fmt.Printf("a type: %T\n", a) | |
// 将a2声明为IntAlias类型 | |
var a2 IntAlias | |
// 查看a2的类型名 | |
fmt.Printf("a2 type: %T\n", a2) | |
} | |
a type: main.NewInt | |
a2 type: int |
批量定义结构体
type ( | |
// A PrivateKeyConf is a private key config. | |
PrivateKeyConf struct { | |
Fingerprint string | |
KeyFile string | |
} | |
// A SignatureConf is a signature config. | |
SignatureConf struct { | |
Strict bool `json:",default=false"` | |
Expiry time.Duration `json:",default=1h"` | |
PrivateKeys []PrivateKeyConf | |
} | |
) |
单个定义结构体
type PrivateKeyConf struct { | |
Fingerprint string | |
KeyFile string | |
} | |
type SignatureConf struct { | |
Strict bool `json:",default=false"` | |
Expiry time.Duration `json:",default=1h"` | |
PrivateKeys []PrivateKeyConf | |
} |