From e7bb6ba60a6850ea3998e068d2642e8b730d40a7 Mon Sep 17 00:00:00 2001 From: Archie Fox Date: Fri, 14 Mar 2025 15:11:17 +0300 Subject: [PATCH] Add any type and output errors --- go-demo-4/account/vault.go | 7 +++---- go-demo-4/files/files.go | 5 +++-- go-demo-4/main.go | 5 +++-- go-demo-4/output/errors.go | 16 ++++++++++++++++ 4 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 go-demo-4/output/errors.go diff --git a/go-demo-4/account/vault.go b/go-demo-4/account/vault.go index b76de27..a4cb7da 100644 --- a/go-demo-4/account/vault.go +++ b/go-demo-4/account/vault.go @@ -2,10 +2,9 @@ package account import ( "encoding/json" + "password/output" "strings" "time" - - "github.com/fatih/color" ) type ByteReader interface { @@ -46,7 +45,7 @@ func NewVault(db Db) *VaultWithDb { var vault Vault err = json.Unmarshal(file, &vault) if err != nil { - color.Red("Не удалось разобрать файл data.json") + output.PrintError("Не удалось разобрать файл data.json") return &VaultWithDb{ Vault: Vault{ Accounts: []Account{}, @@ -105,7 +104,7 @@ func (vault *VaultWithDb) save() { vault.UpdatedAt = time.Now() data, err := vault.Vault.ToBytes() if err != nil { - color.Red("Не удалось преобразовать") + output.PrintError("Не удалось преобразовать") } vault.db.Write(data) } diff --git a/go-demo-4/files/files.go b/go-demo-4/files/files.go index a885220..75e6832 100644 --- a/go-demo-4/files/files.go +++ b/go-demo-4/files/files.go @@ -3,6 +3,7 @@ package files import ( "fmt" "os" + "password/output" ) type JsonDb struct { @@ -26,13 +27,13 @@ func (db *JsonDb) Read() ([]byte, error) { func (db *JsonDb) Write(content []byte) { file, err := os.Create(db.filename) if err != nil { - fmt.Println(err) + output.PrintError(err) } defer file.Close() _, err = file.Write(content) if err != nil { file.Close() - fmt.Println(err) + output.PrintError(err) return } fmt.Println("Файл успешно записан") diff --git a/go-demo-4/main.go b/go-demo-4/main.go index 20df5e9..598fd88 100644 --- a/go-demo-4/main.go +++ b/go-demo-4/main.go @@ -4,6 +4,7 @@ import ( "fmt" "password/account" "password/files" + "password/output" "github.com/fatih/color" ) @@ -55,7 +56,7 @@ func deleteAccount(vault *account.VaultWithDb) { if isDeleted { color.Green("Удалено") } else { - color.Red("Не найдено") + output.PrintError("Не найдено") } } @@ -66,7 +67,7 @@ func createAccount(vault *account.VaultWithDb) { myAccount, err := account.NewAccount(login, password, url) if err != nil { - fmt.Println("ОШИБКА: Неверный формат URL или Login") + output.PrintError("ОШИБКА: Неверный формат URL или Login") return } vault.AddAccount(*myAccount) diff --git a/go-demo-4/output/errors.go b/go-demo-4/output/errors.go new file mode 100644 index 0000000..1414dfc --- /dev/null +++ b/go-demo-4/output/errors.go @@ -0,0 +1,16 @@ +package output + +import "github.com/fatih/color" + +func PrintError(value any) { + switch t := value.(type) { + case string: + color.Red(t) + case int: + color.Red("Код ошибки: %d", t) + case error: + color.Red(t.Error()) + default: + color.Red("Неизвестный тип ошибки") + } +}