diff --git a/basic-struct.go b/basic-struct.go new file mode 100644 index 0000000..9f1df3b --- /dev/null +++ b/basic-struct.go @@ -0,0 +1,78 @@ +// Copyright 2018 Gytis Repečka. All rights reserved. +// Use of this source code is governed by a GNU GPL +// license that can be found in the LICENSE file. + +package main + +import ( + "fmt" +) + +// Define named structures + +type CarMake struct { + makeTitle string + countryOfOrigin string +} + +type Car struct { + make CarMake + model string + year int + started bool +} + +// Functions (methods) + +// Receiving a pointer to Car so can modify it +func (c *Car) Start() { + c.started = true + fmt.Printf("Car %s %s says vrooom!\n", c.make.makeTitle, c.model) +} + +func main() { + var carMakes []CarMake + newCarMake := CarMake{makeTitle: "Toyota", countryOfOrigin: "Japan"} + carMakes = append(carMakes, newCarMake) + newCarMake = CarMake{makeTitle: "Renault", countryOfOrigin: "France"} + carMakes = append(carMakes, newCarMake) + newCarMake = CarMake{"Peugeot", "France"} + carMakes = append(carMakes, newCarMake) + + var cars []Car + newCar := Car{carMakes[1], "Clio", 1994, false} + cars = append(cars, newCar) + newCar = Car{carMakes[2], "406", 1997, false} + cars = append(cars, newCar) + newCar = Car{carMakes[0], "Yaris", 2000, false} + cars = append(cars, newCar) + + fmt.Println("--------------------------") + fmt.Println("Make | Model | Country") + fmt.Println("--------------------------") + + for i:=0; i