Ein Go-Programm besteht aus Paketen, und jedes Programm startet im
Paket main. Ein einfaches Go-Programm sieht zum Beispiel so
aus:
package main
import "fmt"
func main() {
fmt.Println("Hello, Go")
}bash mkdir hello cd hellomain.go und
fügen Sie den obigen Code ein.bash go run main.go Sie
sollten die Ausgabe “Hello, Go” sehen.Variablen werden in Go mit dem Schlüsselwort var
deklariert. Alternativ können Sie die Kurzschreibweise :=
verwenden.
var name string
name = "GoLang"
name := "GoLang"true oder
false)var age int = 30
var temperature float64 = 36.6
var isProgrammingFun bool = true
var language string = "Go"var arr [3]int = [3]int{1, 2, 3}
var slice []int = []int{1, 2, 3, 4, 5}
var m map[string]int = map[string]int{"one": 1, "two": 2}
type Person struct {
Name string
Age int
}
var p Person = Person{Name: "Alice", Age: 30}if age > 18 {
fmt.Println("Erwachsen")
} else {
fmt.Println("Nicht erwachsen")
}switch day := "Montag"; day {
case "Montag":
fmt.Println("Wochenbeginn")
case "Freitag":
fmt.Println("Wochenende naht")
default:
fmt.Println("Ein anderer Tag")
}for i := 0; i < 5; i++ {
fmt.Println(i)
}nums := []int{1, 2, 3, 4, 5}
for index, num := range nums {
fmt.Println(index, num)
}i := 0
for i < 5 {
fmt.Println(i)
i++
}func add(a int, b int) int {
return a + b
}
result := add(3, 4)
fmt.Println(result)func divide(a int, b int) (int, int) {
quotient := a / b
remainder := a % b
return quotient, remainder
}
q, r := divide(10, 3)
fmt.Println(q, r)increment := func(x int) int {
return x + 1
}
fmt.Println(increment(5))
func makeIncrementer() func(int) int {
return func(x int) int {
return x + 1
}
}
inc := makeIncrementer()
fmt.Println(inc(5))Arrays haben eine feste Größe.
var arr [3]int = [3]int{1, 2, 3}
fmt.Println(arr) // Ausgabe: [1 2 3]Slices sind dynamisch und können in der Größe variieren.
slice := []int{1, 2, 3, 4, 5}
fmt.Println(slice) // Ausgabe: [1 2 3 4 5]Hinzufügen:
slice = append(slice, 6)
fmt.Println(slice) // Ausgabe: [1 2 3 4 5 6]Entfernen:
slice = slice[1:] // Entfernt das erste Element
fmt.Println(slice) // Ausgabe: [2 3 4 5 6]Kopieren:
slice2 := make([]int, len(slice))
copy(slice2, slice)
fmt.Println(slice2) // Ausgabe: [2 3 4 5 6]Maps sind Schlüssel-Wert-Paare und sehr flexibel in der Verwendung.
var m map[string]int = map[string]int{"one": 1, "two": 2}
m["three"] = 3
fmt.Println(m) // Ausgabe: map[one:1 two:2 three:3]for key, value := range m {
fmt.Println(key, value)
}Structs sind benutzerdefinierte Datentypen, die eine Sammlung von Feldern enthalten.
type Person struct {
Name string
Age int
}
p := Person{Name: "Alice", Age: 30}
fmt.Println(p) // Ausgabe: {Alice 30}Methoden können an Structs definiert werden, um Verhalten zu implementieren.
func (p Person) Greet() string {
return "Hello, " + p.Name
}
p := Person{Name: "Alice"}
fmt.Println(p.Greet()) // Ausgabe: Hello, AliceStructs können andere Structs als Felder enthalten.
type Address struct {
City, State string
}
type Person struct {
Name string
Age int
Address Address
}
p := Person{Name: "Alice", Age: 30, Address: Address{City: "New York", State: "NY"}}
fmt.Println(p) // Ausgabe: {Alice 30 {New York NY}}Go bietet das sort Paket zum Sortieren von Slices.
import "sort"
nums := []int{5, 3, 4, 1, 2}
sort.Ints(nums)
fmt.Println(nums) // Ausgabe: [1 2 3 4 5]func linearSearch(nums []int, target int) int {
for i, num := range nums {
if num == target {
return i
}
}
return -1
}
index := linearSearch([]int{1, 2, 3, 4, 5}, 3)
fmt.Println(index) // Ausgabe: 2func binarySearch(nums []int, target int) int {
left, right := 0, len(nums)-1
for left <= right {
mid := left + (right-left)/2
if nums[mid] == target {
return mid
} else if nums[mid] < target {
left = mid + 1
} else {
right = mid - 1
}
}
return -1
}
index := binarySearch([]int{1, 2, 3, 4, 5}, 3)
fmt.Println(index) // Ausgabe: 2Rekursion ist eine Technik, bei der eine Funktion sich selbst aufruft, um ein Problem zu lösen.
func factorial(n int) int {
if n == 0 {
return 1
}
return n * factorial(n-1)
}
fmt.Println(factorial(5)) // Ausgabe: 120import (
"fmt"
"math"
)
fmt.Println(math.Sqrt(16))package mypackage
func Hello() string {
return "Hello, World!"
}go mod init example.com/mymodule
go get some/packagepackage main
import "example.com/mymodule/mypackage"
func main() {
fmt.Println(mypackage.Hello())
}