编辑代码

package main  
import (  
	"fmt"  
	"strings"  
)  
type Book struct {  
	ID       int  
	Name     string  
	Author   string  
	Publisher string  
	Price    float64  
}  
type BookManager struct {  
	books []Book  
} 
func (bm *BookManager) AddBook(book Book) {  
	bm.books = append(bm.books, book)  
}  
func (bm *BookManager) DeleteBook(id int, name string) bool {  
	for i, b := range bm.books {  
		if b.ID == id || b.Name == name {  
			bm.books = append(bm.books[:i], bm.books[i+1:]...)  
			return true  
		}  
	}  
	return false  
}   
func (bm *BookManager) FindBook(id int, name, author string) []Book {  
	var foundBooks []Book  
	for _, b := range bm.books {  
		if b.ID == id || b.Name == name || b.Author == author {  
			foundBooks = append(foundBooks, b)  
		}  
	}  
	return foundBooks  
}  
func (bm *BookManager) UpdateBook(id int, newBook Book) bool {  
	for i, b := range bm.books {  
		if b.ID == id {  
			bm.books[i] = newBook  
			return true  
		}  
	}  
	return false  
}  
func (bm *BookManager) ShowBooks() {  
	for _, b := range bm.books {  
		fmt.Printf("ID: %d, Name: %s, Author: %s, Publisher: %s, Price: %.2f\n",  
			b.ID, b.Name, b.Author, b.Publisher, b.Price)  
	}  
}  
func main() {  
	var bm BookManager  
	bm.AddBook(Book{ID: 1, Name: "Go Programming", Author: "Alan A. A. Donovan", Publisher: "O'Reilly", Price: 49.99})  
	bm.AddBook(Book{ID: 2, Name: "Effective Go", Author: "Rob Pike", Publisher: "Addison-Wesley", Price: 29.99})  
	bm.ShowBooks()  
	found := bm.FindBook(1, "", "")  
	for _, b := range found {  
		fmt.Printf("Found book: %s\n", b.Name)  
	}  
	updatedBook := Book{ID: 1, Name: "Go Programming (Updated)", Author: "Alan A. A. Donovan", Publisher: "O'Reilly", Price: 59.99}  
	bm.UpdateBook(1, updatedBook)  
	bm.ShowBooks()  
	bm.DeleteBook(2, "")  
	bm.ShowBooks()  
}