Поиск…


Синтаксис

  • var x int // объявлять переменную x с типом int
  • var s string // объявлять переменную s с строкой типа
  • x = 4 // определить значение x
  • s = "foo" // определить значение s
  • y: = 5 // объявлять и определять y, выводящий его тип в int
  • f: = 4.5 // объявить и определить f, выведя его тип в float64
  • b: = "bar" // объявлять и определять b вывод его типа в строку

Основная переменная

Go - это статически типизированный язык, что означает, что вам обычно нужно объявлять тип переменных, которые вы используете.

// Basic variable declaration. Declares a variable of type specified on the right.
// The variable is initialized to the zero value of the respective type.
var x int
var s string
var p Person // Assuming type Person struct {}

// Assignment of a value to a variable
x = 3

// Short declaration using := infers the type
y := 4

u := int64(100)    // declare variable of type int64 and init with 100 
var u2 int64 = 100 // declare variable of type int64 and init with 100

Множественное назначение переменной

В Go вы можете одновременно объявлять несколько переменных.

// You can declare multiple variables of the same type in one line
var a, b, c string

var d, e string = "Hello", "world!"

// You can also use short declaration to assign multiple variables
x, y, z := 1, 2, 3

foo, bar := 4, "stack" // `foo` is type `int`, `bar` is type `string`

Если функция возвращает несколько значений, вы также можете присваивать значения переменным на основе возвращаемых значений функции.

func multipleReturn() (int, int) {
    return 1, 2
}

x, y := multipleReturn() // x = 1, y = 2

func multipleReturn2() (a int, b int) {
    a = 3
    b = 4
    return
}

w, z := multipleReturn2() // w = 3, z = 4

Пустой идентификатор

Go будет вызывать ошибку, когда есть переменная, которая не используется, чтобы побудить вас писать лучший код. Однако есть некоторые ситуации, когда вам действительно не нужно использовать значение, хранящееся в переменной. В этих случаях вы используете «пустой идентификатор» _ для назначения и отбрасывания назначенного значения.

Пустому идентификатору может быть присвоено значение любого типа и чаще всего используется в функциях, возвращающих несколько значений.

Множественные возвращаемые значения

func SumProduct(a, b int) (int, int) {
    return a+b, a*b
}

func main() {
    // I only want the sum, but not the product
    sum, _ := SumProduct(1,2) // the product gets discarded
    fmt.Println(sum) // prints 3
}

Использование range

func main() {

    pets := []string{"dog", "cat", "fish"}

    // Range returns both the current index and value
    // but sometimes you may only want to use the value
    for _, pet := range pets {
        fmt.Println(pet)
    }

}

Проверка типа переменной

Есть ситуации, когда вы не будете уверены, какой тип переменной есть, когда она возвращается из функции. Вы всегда можете проверить тип переменной с помощью var.(type) если вы не уверены, какой тип это:

x := someFunction() // Some value of an unknown type is stored in x now

switch x := x.(type) {
    case bool:
        fmt.Printf("boolean %t\n", x)             // x has type bool
    case int:
        fmt.Printf("integer %d\n", x)             // x has type int
    case string:
        fmt.Printf("pointer to boolean %s\n", x) // x has type string
    default:
        fmt.Printf("unexpected type %T\n", x)     // %T prints whatever type x is
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow