Go Syntax Tutorial in one file
package main
import "fmt"
// Function to add two numbers
func add(a, b int) int {
return a + b
}
func main() {
// Hello World
fmt.Println("Hello, World!")
// Values and Variables
var im, jm int = 1, 2
km := 3
cm, python, java := true, false, "no!"
var num int = 42
fmt.Println(im, jm, km, cm, python, java)
fmt.Println("Value of num:", num)
// Constants
const pi float64 = 3.14
fmt.Println("Value of pi:", pi)
// For loop
fmt.Println("\nFor Loop:")
for i := 0; i < 5; i++ {
fmt.Println(i)
}
// The init and post statements are optional.
sum := 1
for ; sum < 1000; {
sum += sum
}
fmt.Println(sum)
// while loop in Go
for sum < 1000 {
sum += sum
}
fmt.Println(sum)
// Infinite Loop
for {
}
// If/Else
fmt.Println("\nIf/Else:")
x := 10
if x > 5 {
fmt.Println("x is greater than 5")
} else {
fmt.Println("x is less than or equal to 5")
}
// Switch
fmt.Println("\nSwitch:")
day := "Monday"
switch day {
case "Monday":
fmt.Println("It's Monday!")
case "Tuesday":
fmt.Println("It's Tuesday!")
default:
fmt.Println("It's another day.")
}
// Arrays
fmt.Println("\nArrays:")
var arr [3]int
arr[0] = 1
arr[1] = 2
arr[2] = 3
fmt.Println("Array:", arr)
// Slices
fmt.Println("\nSlices:")
slice := arr[1:3]
fmt.Println("Slice:", slice)
// Maps
fmt.Println("\nMaps:")
person := map[string]string{
"name": "John",
"age": "25",
"city": "New York",
}
fmt.Println("Person:", person)
// Range
fmt.Println("\nRange:")
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}
// Functions
fmt.Println("\nFunctions:")
result := add(3, 4)
fmt.Println("Result of add function:", result)
// Defer
fmt.Println("\nDefer:")
deferExample()
// Pointers
fmt.Println("\nPointers:")
pointerExample()
// Structs
fmt.Println("\nStructs:")
structExample()
// Interfaces
fmt.Println("\nInterfaces:")
interfaceExample()
// Goroutines
fmt.Println("\nGoroutines:")
goroutineExample()
// Channels
fmt.Println("\nChannels:")
channelExample()
}
// Defer
func deferExample() {
defer fmt.Println("Deferred statement executed after the function returns.")
fmt.Println("Regular statement.")
}
// Pointers
func pointerExample() {
num := 10
ptr := &num
fmt.Println("Value of num:", num)
fmt.Println("Address of num:", &num)
fmt.Println("Value through pointer:", *ptr)
}
// Structs
type personStruct struct {
Name string
Age int
}
func structExample() {
person := personStruct{"Alice", 30}
fmt.Println("Person:", person)
}
// Interfaces
type animal interface {
Sound() string
}
type dog struct{}
func (d dog) Sound() string {
return "Woof!"
}
type cat struct{}
func (c cat) Sound() string {
return "Meow!"
}
func interfaceExample() {
var myPet animal
myPet = dog{}
fmt.Println("Dog says:", myPet.Sound())
myPet = cat{}
fmt.Println("Cat says:", myPet.Sound())
}
// Goroutines
func goroutineExample() {
go func() {
fmt.Println("Goroutine executed concurrently.")
}()
fmt.Println("Main function continues to run.")
}
// Channels
func channelExample() {
ch := make(chan string)
go func() {
ch <- "Hello from channel!"
}()
msg := <-ch
fmt.Println("Received message:", msg)
}
Last updated