new version

This commit is contained in:
a.pivkin
2025-12-15 20:20:11 +03:00
parent 75066c8a08
commit 4e051565e2
34 changed files with 641 additions and 331 deletions
+8
View File
@@ -0,0 +1,8 @@
package main
type IGun interface {
setName(name string)
setPower(power int)
getName() string
getPower() int
}
+14
View File
@@ -0,0 +1,14 @@
package main
type AK47 struct {
Gun
}
func newAk47() IGun {
return AK47{
Gun: Gun{
name: "AK47",
power: 4,
},
}
}
+3
View File
@@ -0,0 +1,3 @@
module main.go
go 1.25.5
+22
View File
@@ -0,0 +1,22 @@
package main
type Gun struct {
name string
power int
}
func (g Gun) setName(name string) {
g.name = name
}
func (g Gun) setPower(power int) {
g.power = power
}
func (g Gun) getName() string {
return g.name
}
func (g Gun) getPower() int {
return g.power
}
+13
View File
@@ -0,0 +1,13 @@
package main
import "errors"
func GetGun(gunType string) (IGun,error){
if gunType == "ak47" {
return newAk47(),nil
}
if gunType == "musket" {
return newMusket(),nil
}
return nil,errors.New("No such a gun")
}
+22
View File
@@ -0,0 +1,22 @@
package main
import "fmt"
func PrintDetails(gunName IGun) {
fmt.Println("Gun model is ",gunName.getName())
fmt.Println("Gun power is ",gunName.getPower())
}
func main() {
ak47,err := GetGun("ak47")
if err != nil {
fmt.Println(err)
}
musket,err := GetGun("musket")
if err != nil {
fmt.Println(err)
}
PrintDetails(ak47)
PrintDetails(musket)
}
+14
View File
@@ -0,0 +1,14 @@
package main
type musket struct {
Gun
}
func newMusket() IGun {
return musket{
Gun: Gun{
name: "Musket gun",
power: 1,
},
}
}