Latest web development tutorials

Перейти лингвистические переменные

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

имена переменных Go языка состоят из букв, цифр, подчеркивания, из которых первая буква не является числовым значением.

Общий вид переменной объявляются с помощью ключевого слова VAR:

var identifier type

объявление переменной

Во-первых, указать тип переменной, декларацию, если присвоение, используйте значение по умолчанию.

var v_name v_type
v_name = value

Во-вторых, на основе значения переменных типов самоопределения.

var v_name = value

В-третьих, опуская переменная, примечание: Переменная = левый не должна быть объявлена ​​на месте, в противном случае это приведет к ошибке компилятора.

v_name := value

// 例如
var a int = 10
var b = 10
c : = 10

Примерами могут служить следующие:

package main
var a = "w3cschool本教程"
var b string = "w3cschool.cc"
var c bool

func main(){
    println(a, b, c)
}

Приведенные выше примеры Реализация результатов:

w3cschool本教程 w3cschool.cc false

Multivariable декларация

//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断

vname1, vname2, vname3 := v1, v2, v3 //出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误


// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

Примерами могут служить следующие:

package main

var x, y int
var (  // 这种因式分解关键字的写法一般用于声明全局变量
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    println(x, y, a, b, c, d, e, f, g, h)
}

Приведенные выше примеры Реализация результатов:

0 0 0 false 1 2 123 hello 123 hello

Типы значений и ссылочные типы

Все, как целый, дробный, BOOL и строки эти основные типы все типы значений, используя эти типы переменных непосредственно к значению, хранящемуся в памяти:

При использовании знака равенства = , когда значение переменной присваивается другой переменной, например , как: j = i , в действительности значение памяти я будет копия:

Вы можете получить адрес памяти переменной я и я, например: 0xf840000040 (каждый адрес может отличаться). Значение переменной хранится тип значения в стеке.

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

Более сложные данных часто требует использования нескольких слов, эти данные, как правило, хранятся с использованием эталонного типа.

Переменная ссылочного типа r1 r1 это значение сохраняется в памяти адреса, где (цифровой), или положение адреса памяти первого слова находится.

Адрес памяти называется указатель, который был на самом деле есть еще одно слово.

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

Когда оператор присваивания r2 = r1, только ссылки (адрес) копируется.

Если значение R1 изменяется, то значение всех цитатах будет изменен, чтобы точка, в этом случае, R2 также затронуты.


Краткая форма, используйте: = оператор присваивания

Мы знаем, что вы можете автоматически определить тип переменной инициализируется переменная система отсутствует, оператор написано на декларации вар ключевого слова на самом деле немного излишним, так что мы можем быть сокращены их как: = 50 или B: = ложь.

а и б типов (INT и булева) будет автоматически выведен компилятор.

Это является предпочтительной формой использования переменных, но он может быть использован только в теле функции, он не может быть использован для объявления с отнесением к глобальным переменным. Используйте операторы: = может эффективно создать новую переменную с именем инициализации заявление.

Меры предосторожности

Если тот же самый блок кода, мы не можем повторно использовать то же имя для переменной заявления инициализации, например: а: = 20 не допускается, компилятор не выдаст ошибку никаких новых переменных на левой стороне: =, но = 20 возможно, потому что это в той же переменной присваивается новое значение.

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

Если объявить локальную переменную, но не используется в том же блоке кода в ней, вы получите ошибку компиляции, например, как в следующем примере, какая переменная а:

func main() {
   var a string = "abc"
   fmt.Println("hello, world")
}

Попробуйте скомпилировать этот код получит ошибкуобъявленной и не используется.

Кроме того, чтобы дать простое задание, не достаточно, необходимо использовать это значение, поэтому использование

fmt.Println("hello, world", a)

Это приведет к удалению ошибок.

Но глобальные переменные объявляются, но не разрешается использовать.

>

Несколько переменных одного и того же типа могут быть объявлены в той же строке, такие как:

var a, b, c int

Другие переменные могут быть назначены на той же линии, такие как:

a, b, c = 5, 7, "abc"

Выше линии предполагает, что переменные а, Б и были объявлены, в противном случае его следует использовать таким образом:

a, b, c := 5, 7, "abc"

Эти значения находятся справа в том же порядке, присвоенного переменной на левой стороне, так что значение равно 5, б значение равно 7, то значение С "ABC".

Это назначение называется параллельно или одновременно.

Если вы хотите поменять местами значения двух переменных, вы можете просто использовать, B = B, а.

Пустой идентификатор _ также используется отброшенные значения, такие как значение 5: _, B = 5, 7 был оставлен.

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

Параллельное назначение также используется как функция возвращает несколько возвращаемых значений, например, Вэл и ERR ошибки здесь одновременно получается вызовом функции FUNC1: Вэл, ERR = Func1 (var1).