From 2fe737cc85c3e5b3dfa9f7fbd251a6d7ac5ef9bf Mon Sep 17 00:00:00 2001 From: Awnytelone Date: Fri, 29 Dec 2023 06:56:24 +0300 Subject: [PATCH] lab5 --- golang/internal/pistolStruct/pistolStruct.go | 42 ++++++++++++++++++++ golang/main.go | 26 ++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 golang/internal/pistolStruct/pistolStruct.go diff --git a/golang/internal/pistolStruct/pistolStruct.go b/golang/internal/pistolStruct/pistolStruct.go new file mode 100644 index 00000000..1f3dff3e --- /dev/null +++ b/golang/internal/pistolStruct/pistolStruct.go @@ -0,0 +1,42 @@ +package pistolStruct + +import "fmt" + +type pistol struct { + magazineCapacity int + model string + caliber string +} + +func (c pistol) GetmagazineCapacity() int { + return c.magazineCapacity +} + +func NewPistol(capacityVarious int, modelVarious, caliberVarious string) (pistol, error) { + var p pistol = pistol{ + model: modelVarious, + caliber: caliberVarious, + } + var err = p.SetmagazineCapacity(capacityVarious) + return p, err +} + +func (c *pistol) SetmagazineCapacity(capacity int) error { + if capacity >= 5 && capacity <= 30 { + c.magazineCapacity = capacity + return nil + } + return fmt.Errorf("invalid pistol magazine capacity") +} + +func (c pistol) GetModel() string { + return c.model +} + +func (c *pistol) SetModel(model string) { + c.model = model +} + +func (c pistol) GetCaliber() string { + return c.caliber +} diff --git a/golang/main.go b/golang/main.go index 068126cd..6d2ea082 100644 --- a/golang/main.go +++ b/golang/main.go @@ -2,10 +2,18 @@ package main import ( "fmt" + "log" "github.com/stretchr/testify/internal/lab4" + "github.com/stretchr/testify/internal/pistolStruct" ) +func checkErrors(err error) { + if err != nil { + log.Fatal(err) + } +} + func main() { fmt.Println("Хосровян Александр Арменович") @@ -19,4 +27,22 @@ func main() { fmt.Println("Task B:") var list = []float64{0.2, 0.3, 0.38, 0.43, 0.57} fmt.Println(lab4.TaskB(list)) + + fmt.Println("Lab5:") + pistol, err := pistolStruct.NewPistol(9, "Desert Eagler", ".357 Magnum") + checkErrors(err) + + pistol2, err := pistolStruct.NewPistol(15, "...", "...") + checkErrors(err) + + pistol2.SetModel("Glock") + pistol.SetModel("Revolver") + + err = pistol.SetmagazineCapacity(6) + checkErrors(err) + fmt.Printf("Pistol's magazine capacity is %d\n", pistol.GetmagazineCapacity()) + fmt.Printf("Its model is %s\n", pistol.GetModel()) + + fmt.Printf("Pistol's magazine capacity is %d\n", pistol2.GetmagazineCapacity()) + fmt.Printf("Its model is %s\n", pistol2.GetModel()) }