diff --git a/headFirst/interfaces/gadget/tape.go b/headFirst/interfaces/gadget/tape.go new file mode 100644 index 0000000..9fd5e46 --- /dev/null +++ b/headFirst/interfaces/gadget/tape.go @@ -0,0 +1,27 @@ +package gadget + +import "fmt" + +type TapePlayer struct { + batteries string +} + +func (t TapePlayer) Play(song string) { + fmt.Println("Playing", song) +} + +func (t TapePlayer) Stop() { + fmt.Println("Stopped") +} + +type TapeRecorder struct { + Microphones int +} + +func (t TapeRecorder) Play(song string) { + fmt.Println("Playing", song) +} + +func (t TapeRecorder) Stop() { + fmt.Println("Stopped") +} diff --git a/headFirst/interfaces/go.mod b/headFirst/interfaces/go.mod new file mode 100644 index 0000000..2359d15 --- /dev/null +++ b/headFirst/interfaces/go.mod @@ -0,0 +1,3 @@ +module main + +go 1.24.6 diff --git a/headFirst/interfaces/main.go b/headFirst/interfaces/main.go new file mode 100644 index 0000000..c44e848 --- /dev/null +++ b/headFirst/interfaces/main.go @@ -0,0 +1,26 @@ +package main + +import "main/gadget" + +type Player interface { + Play(string) + Stop() +} + +func playlist(device Player, songs []string) { + for _, song := range songs { + device.Play(song) + } + device.Stop() +} + +func main() { + var player Player + player = gadget.TapePlayer{} + mixtape := []string{"Red Plesen'", "Coco Jambo","Barbied Girl"} + playlist(player,mixtape) + + player = gadget.TapeRecorder{} + mixtape = []string{"Dectl'", "Carmen","Scatman"} + playlist(player,mixtape) +} diff --git a/headFirst/recover/data.txt b/headFirst/recover/data.txt new file mode 100644 index 0000000..8a1218a --- /dev/null +++ b/headFirst/recover/data.txt @@ -0,0 +1,5 @@ +1 +2 +3 +4 +5 diff --git a/headFirst/recover/go.mod b/headFirst/recover/go.mod new file mode 100644 index 0000000..2359d15 --- /dev/null +++ b/headFirst/recover/go.mod @@ -0,0 +1,3 @@ +module main + +go 1.24.6 diff --git a/headFirst/recover/main.go b/headFirst/recover/main.go new file mode 100644 index 0000000..d1b4025 --- /dev/null +++ b/headFirst/recover/main.go @@ -0,0 +1,45 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +func OpenFile(filename string) (*os.File, error) { + fmt.Println("Opening file",filename) + return os.Open(filename) +} + +func CloseFile(filename *os.File) { + fmt.Println("Closing file") + filename.Close() +} + +func GetNums(filename string) ([]int,error) { + var nums []int + file,err :=OpenFile("data.txt") + defer CloseFile(file) + if err != nil { + return nil,err + } + scanner := bufio.NewScanner(file) + for scanner.Scan() { + number,err := strconv.ParseInt(scanner.Text(),10,0) + if err != nil { + return nil,err + } + fmt.Println(number) + nums = append(nums, int(number)) + } + if scanner.Err() != nil { + return nil,scanner.Err() + } + return nums,err +} + + +func main() { + GetNums("data.txt") +}