new version
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
package main
|
||||
|
||||
type IGun interface {
|
||||
setName(name string)
|
||||
setPower(power int)
|
||||
getName() string
|
||||
getPower() int
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package main
|
||||
|
||||
type AK47 struct {
|
||||
Gun
|
||||
}
|
||||
|
||||
func newAk47() IGun {
|
||||
return AK47{
|
||||
Gun: Gun{
|
||||
name: "AK47",
|
||||
power: 4,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
module main.go
|
||||
|
||||
go 1.25.5
|
||||
@@ -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
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package main
|
||||
|
||||
type musket struct {
|
||||
Gun
|
||||
}
|
||||
|
||||
func newMusket() IGun {
|
||||
return musket{
|
||||
Gun: Gun{
|
||||
name: "Musket gun",
|
||||
power: 1,
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user