GO实现一个人增删改查
时间: 2023-05-28 21:03:18 浏览: 44
以下是一个简单的GO程序,可以实现人员的增删改查操作:
```go
package main
import (
"fmt"
)
type Person struct {
ID int
Name string
Age int
}
var people []Person
func main() {
menu()
}
func menu() {
var choice int
for {
fmt.Println("1. Add person")
fmt.Println("2. Delete person")
fmt.Println("3. Update person")
fmt.Println("4. View all people")
fmt.Println("5. Exit")
fmt.Scanln(&choice)
switch choice {
case 1:
addPerson()
case 2:
deletePerson()
case 3:
updatePerson()
case 4:
viewPeople()
case 5:
fmt.Println("Goodbye!")
return
default:
fmt.Println("Invalid choice")
}
}
}
func addPerson() {
var name string
var age int
fmt.Print("Enter name: ")
fmt.Scanln(&name)
fmt.Print("Enter age: ")
fmt.Scanln(&age)
id := len(people) + 1
person := Person{id, name, age}
people = append(people, person)
fmt.Println("Person added successfully")
}
func deletePerson() {
var id int
fmt.Print("Enter ID of person to delete: ")
fmt.Scanln(&id)
for i, person := range people {
if person.ID == id {
people = append(people[:i], people[i+1:]...)
fmt.Println("Person deleted successfully")
return
}
}
fmt.Println("Person not found")
}
func updatePerson() {
var id int
var name string
var age int
fmt.Print("Enter ID of person to update: ")
fmt.Scanln(&id)
for i, person := range people {
if person.ID == id {
fmt.Print("Enter name: ")
fmt.Scanln(&name)
fmt.Print("Enter age: ")
fmt.Scanln(&age)
people[i].Name = name
people[i].Age = age
fmt.Println("Person updated successfully")
return
}
}
fmt.Println("Person not found")
}
func viewPeople() {
fmt.Println("ID\tName\tAge")
for _, person := range people {
fmt.Printf("%d\t%s\t%d\n", person.ID, person.Name, person.Age)
}
}
```
在这个程序中,我们定义了一个`Person`结构体,包含一个ID、姓名和年龄。我们还定义了一个`people`切片,用于存储所有的人员信息。
程序中的`menu`函数提供了一个简单的菜单,用户可以选择添加、删除、更新或查看所有人员的信息。`addPerson`函数用于添加新的人员信息,`deletePerson`函数用于删除已有的人员信息,`updatePerson`函数用于更新已有的人员信息,`viewPeople`函数用于查看所有的人员信息。
程序使用`fmt`库进行输入和输出,使用`switch`语句来处理用户的选择。在`addPerson`函数中,我们使用`len(people) + 1`来生成新人员的ID,然后将新人员信息添加到`people`切片中。在`deletePerson`函数中,我们使用`for`循环来查找要删除的人员,如果找到了,就使用`append`函数从`people`切片中删除该人员。在`updatePerson`函数中,我们使用`for`循环来查找要更新的人员,如果找到了,就使用`Scanln`函数读取新的姓名和年龄,并将其更新到`people`切片中。
在`viewPeople`函数中,我们使用`fmt.Printf`函数以表格形式打印所有人员的信息。每行的第一列是人员的ID,第二列是人员的姓名,第三列是人员的年龄。