Перейти к содержанию

Переменные и типы

TL;DR

  • var x int = 10 или короткое x := 10.
  • Базовые: int, int64, float64, string, bool.
  • Zero values: 0, "", false, nil.
  • Type conversion явный: int64(x). Implicit conversion в Go нет.

Объявление

// var с типом и без
var x int = 10
var y = 20            // int выводится
z := 30                // только внутри функции

// const
const Pi = 3.14159

// Множественное
var (
    name = "Anna"
    age  = 25
)

Zero values

var i int       // 0
var f float64   // 0
var s string    // ""
var b bool      // false
var p *int      // nil
var sl []int    // nil
var m map[string]int  // nil

Type conversion

В Go нет неявных конверсий. Это спасает от багов вида JS "3" + 4 = "34".

var x int = 5
var y float64 = float64(x)   // нужен явный cast
var z int = int(y)

Типичные ошибки на собесе

  1. Думают что int = int32. На самом деле int зависит от платформы (на 64-bit — 64 бита).
  2. Забывают что len("привет") == 12 (UTF-8 байты), не 6 рун. utf8.RuneCountInString("привет") == 6.

Output Quiz

Прорешай задачи на этой странице: Output Quizzes Sprint 1.