Проходим собеседование на GoLang - разработчика
  • Введение
  • Общие вопросы
  • ✏️Шпаргалка по синтаксису GoLang
  • 📖GoLang теория
    • Типы данных
    • Строки
    • Массивы и слайсы
    • Мапы
    • Каналы
    • Goрутины
    • Гонка данных
    • Мьютексы
    • Контекст
    • ООП, интерфейсы
    • Другие вопросы по Go
  • 🚲GoLang Задачи
    • Задачи на строки
    • Задачи на слайсы
    • Задачи на мапы
    • Задачи на указатель
    • HTTP-запросы
    • Задачи про каналы
    • Задачи на интерфесы
    • Задачи на горутины
    • Задачи с БД
    • Задачи на defer
    • Задачи на таймер
    • Задачи на рефакторинг
    • Нерассортированные задачи
  • 🏬Базы данных
    • 🥥SQL (язык запросов)
    • 🍩Индексы
    • 🥞Транзакции
    • ✈️Масштабирование
  • 🚆Протоколы HTTP/UDP/TCP и т.д.
  • 🛞Алгоритмы
  • 🖥️Операционные системы
  • 🚢Сисдиз
  • 🤪Управление командой
Powered by GitBook
On this page
  • Как обойти массив через range?
  • Как обойти ассоциативный массив?
  • Как обойти строку посимвольно?

Шпаргалка по синтаксису 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)
}

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

PreviousОбщие вопросыNextGoLang теория

Last updated 11 months ago

✏️