面试题答案
一键面试package main
import "fmt"
type User struct {
Name string
Age int
}
func (u *User) SetName(name string) *User {
u.Name = name
return u
}
func (u *User) SetAge(age int) *User {
u.Age = age
return u
}
在Go语言中使用上述代码定义结构体User
及其方法。若要测试链式调用,可在main
函数中添加如下代码:
func main() {
user := User{}.SetName("John").SetAge(30)
fmt.Printf("Name: %s, Age: %d\n", user.Name, user.Age)
}
上述代码先定义了结构体User
,然后为其定义了SetName
和SetAge
方法,每个方法都返回*User
类型的指针,这样就可以支持链式调用。在main
函数中演示了如何进行链式调用并输出结果。
如果是Python语言实现如下:
class User:
def __init__(self):
self.Name = None
self.Age = None
def SetName(self, name):
self.Name = name
return self
def SetAge(self, age):
self.Age = age
return self
测试链式调用可添加如下代码:
if __name__ == "__main__":
user = User().SetName("John").SetAge(30)
print(f"Name: {user.Name}, Age: {user.Age}")
在Python中通过类User
定义属性和方法,每个方法返回self
以支持链式调用,在if __name__ == "__main__"
代码块中进行测试。
如果是Java语言实现如下:
class User {
private String Name;
private int Age;
public User setName(String name) {
Name = name;
return this;
}
public User setAge(int age) {
Age = age;
return this;
}
@Override
public String toString() {
return "User{" +
"Name='" + Name + '\'' +
", Age=" + Age +
'}';
}
}
测试链式调用在main
方法中添加如下代码:
public class Main {
public static void main(String[] args) {
User user = new User().setName("John").setAge(30);
System.out.println(user);
}
}
在Java中定义类User
及其setName
和setAge
方法,每个方法返回this
实现链式调用,并重写toString
方法便于输出结果,在main
方法中测试链式调用。