类型别名

##类型别名(type alias)

可以在某一个类型或枚举的基础上定义类型别名,使用上完全一样。

基于基本类型

type Myint = int

type Myf32 = f32

type Myf64 = f64

fn main() {
	i := Myint(10)
	println(i + 100 == 110)
	f := Myf64(1.0)
	println(f + 3.14 == 4.14)
}

基于结构体类型

module main

struct Human {
	name string
}

pub fn (h Human) str() string {
	return 'Human: $h.name'
}

type Person = Human

pub fn (h Person) str() string {
	return 'Person: $h.name'
}

fn main() {
	p := Person{'Bilbo'}
	p2 := Human{'jack'}
	println(p)
	println(p2)
}

基于枚举

enum MyEnum {
	something
	another
	third
}

type MyEnumAlias = MyEnum

fn main() {
	x := MyEnum.something
	println(x)
	a := MyEnumAlias.something
	println(a)
	println(MyEnum.third)
	println(MyEnumAlias.third)
	println(int(MyEnum.third))
	println(int(MyEnumAlias.third))
	println(MyEnum.third == MyEnumAlias.third)
}

###类型别名方法

可以像结构体那样,给类型别名添加方法:

module main

fn main() {
	i := Myint(11)
	println(i.str())
}

type Myint = int

pub fn (m Myint) str() string { // 类型别名的方法
	return 'from myint'
}

最后更新于