面试题答案
一键面试以下以 Go 语言为例实现:
package main
import "fmt"
// User结构体
type User struct {
Name string
Age int
}
// 创建一个闭包函数,用于封装User实例数据
func NewUser(name string, age int) func(string, int) (int, bool) {
u := User{Name: name, Age: age}
return func(action string, value int) (int, bool) {
if action == "get" {
return u.Age, true
} else if action == "set" {
if value > 0 {
u.Age = value
return u.Age, true
}
return 0, false
}
return 0, false
}
}
你可以使用如下方式调用:
func main() {
// 创建一个User实例
user := NewUser("Alice", 25)
// 获取Age
age, ok := user("get", 0)
if ok {
fmt.Printf("Age: %d\n", age)
}
// 设置Age
newAge, ok := user("set", 26)
if ok {
fmt.Printf("New Age: %d\n", newAge)
}
}
如果是 Python 语言实现如下:
class User:
def __init__(self, name, age):
self.__name = name
self.__age = age
def get_age(self):
return self.__age
def set_age(self, age):
if age > 0:
self.__age = age
return self.__age
return None
# 创建User实例
user = User("Alice", 25)
# 获取Age
print("Age:", user.get_age())
# 设置Age
new_age = user.set_age(26)
if new_age is not None:
print("New Age:", new_age)