✏️Шпаргалка по синтаксису GoLang

Основы

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

Переменные

var a int = 10
var b = 20
c := 30

Константы

const Pi = 3.14

Функции

func add(x int, y int) int {
    return x + y
}

Условные операторы

if x > y {
    fmt.Println("x is greater than y")
} else {
    fmt.Println("x is less than or equal to y")
}

Циклы

for i := 0; i < 10; i++ {
    fmt.Println(i)
}

Массивы

var arr [5]int
arr[0] = 1

Срезы

s := []int{1, 2, 3}
s = append(s, 4)

Карты (Maps)

m := make(map[string]int)
m["one"] = 1

Структуры

type Person struct {
    Name string
    Age  int
}

p := Person{Name: "Alice", Age: 30}

Методы

func (p Person) greet() {
    fmt.Println("Hello, my name is", p.Name)
}

Интерфейсы

type Speaker interface {
    Speak() string
}

type Dog struct{}

func (d Dog) Speak() string {
    return "Woof!"
}

Горутины

go func() {
    fmt.Println("Hello from goroutine")
}()

Каналы

ch := make(chan int)
go func() {
    ch <- 1
}()
val := <-ch

Эта шпаргалка охватывает основные элементы синтаксиса GoLang. Если у вас есть конкретные вопросы или требуется более детальная информация, пожалуйста, дайте знать!

Как обойти массив через range?

В GoLang вы можете использовать цикл range для обхода элементов массива, среза, карты или строки. Вот пример, как это сделать для массива:

package main

import "fmt"

func main() {
    arr := [5]int{10, 20, 30, 40, 50}

    for index, value := range arr {
        fmt.Printf("Index: %d, Value: %d\n", index, value)
    }
}

В этом примере:

  • index получает индекс текущего элемента массива.

  • value получает значение текущего элемента массива.

Если вам не нужен индекс, вы можете использовать символ подчеркивания _:

for _, value := range arr {
    fmt.Printf("Value: %d\n", value)
}

Таким образом, вы можете обойти массив и работать только с его значениями.

Как обойти ассоциативный массив?

В GoLang ассоциативные массивы называются картами (maps). Вы можете использовать цикл range для обхода элементов карты. Вот пример:

package main

import "fmt"

func main() {
    // Создаем карту с ключами типа string и значениями типа int
    m := map[string]int{
        "Alice": 30,
        "Bob":   25,
        "Carol": 35,
    }

    // Обходим карту с помощью range
    for key, value := range m {
        fmt.Printf("Key: %s, Value: %d\n", key, value)
    }
}

В этом примере:

  • key получает ключ текущего элемента карты.

  • value получает значение текущего элемента карты.

Если вам не нужен ключ, вы можете использовать символ подчеркивания _:

for _, value := range m {
    fmt.Printf("Value: %d\n", value)
}

Таким образом, вы можете обойти карту и работать только с ее значениями.

Как обойти строку посимвольно?

В GoLang вы можете использовать цикл range для обхода строки посимвольно. Вот пример:

package main

import "fmt"

func main() {
    str := "Hello, World!"

    for index, char := range str {
        fmt.Printf("Index: %d, Character: %c\n", index, char)
    }
}

В этом примере:

  • index получает индекс текущего символа в строке.

  • char получает значение текущего символа в виде руны (rune), что позволяет корректно обрабатывать многобайтовые символы Unicode.

Если вам не нужен индекс, вы можете использовать символ подчеркивания _:

for _, char := range str {
    fmt.Printf("Character: %c\n", char)
}

Таким образом, вы можете обойти строку и работать только с ее символами.

Last updated