方法
V没有Class。但是可以为类型定义方法。 方法是一个具有特殊接收器参数的函数, 只有指定类型的接收器才能执行此函数。 接收方在
fn
和方法名之间有自己的参数列表。struct User {
name string
email string
mut:
age int
}
fn (u User) can_register() bool {
return u.age > 15
}
fn (u mut User) has_birthday() {
u.age += 1
}
fn main() {
mut bob := User {
name: 'Bob'
email: '[email protected].com'
age: 15
}
alice := User {
name: 'Alice'
email: '[email protected]-mail.com'
age: 17
}
println(bob.can_register())
println("Bob needs to be 16 to register, but he only is ${bob.age}.")
println(alice.can_register())
bob.has_birthday()
println(bob.age)
}
输出
false
Bob needs to be 16 to register, but he only is 15.
true
16
上面的代码实现了两种类型为
User
的接收器u
的方法。 注意,has\birthday()
方法有一个mut接收器,这是必需的,因为我们要更改它的数据。 V的惯例不是使用诸如self、this
之类的接收者名字,而是一个短的,最好是一个只有一个字母的名字。1.为
Person
类型创建一个确定某人是否未成年的方法。 2.创建一个确定Animal
是否有毛发的方法。Last modified 3yr ago