Latest web development tutorials

Idź zmienne lingwistyczne

Zmienny z matematyki, języków komputerowe mogą być przechowywane lub wyniki obliczeń mogą być reprezentowane wartości abstrakcję. Zmienne mogą być dostępne za pośrednictwem nazwy zmiennej.

Idź język nazwy zmiennych składają się z liter, cyfr, podkreśleń, z których pierwsza litera nie jest numeryczne.

Ogólna forma zmienna jest zadeklarowana za pomocą słowa kluczowego var:

var identifier type

deklaracja zmiennej

Po pierwsze, należy określić typ zmiennej, deklarację jeśli zadanie, użyj domyślnego.

var v_name v_type
v_name = value

Drugi, na podstawie wartości samostanowienia typów zmiennych.

var v_name = value

Po trzecie, z pominięciem var, uwaga: zmienna = Lewy nie powinny być zadeklarowane w miejscu, w przeciwnym razie spowoduje to błąd kompilatora.

v_name := value

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

Przykłady są następujące:

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

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

Powyższe przykłady implementacji wyników:

w3cschool本教程 w3cschool.cc false

Multivariable oświadczenie

//类型相同多个变量, 非全局变量
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
)

Przykłady są następujące:

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)
}

Powyższe przykłady implementacji wyników:

0 0 0 false 1 2 123 hello 123 hello

Typy wartości i typy referencyjne

Wszystkie takie jak int, float, bool i ciąg te podstawowe typy są wszystkie typy wartości, przy użyciu tych typów zmiennych bezpośrednio do wartości zapisanej w pamięci:

Podczas używania znaku równości = , gdy wartość zmiennej jest przypisana do innej zmiennej, takich jak: j = i , jest w rzeczywistości wartość pamięci i będzie kopia:

Można uzyskać adres pamięci zmiennej I & I, na przykład: 0xf840000040 (każdy adres może być inny). Wartość przechowywana typu wartości zmiennej na stosie.

Adres pamięci będzie zmieniać się w zależności od urządzenia lub nawet sam program na różnych maszynach po wykonaniu mają różne adresy pamięci. Ponieważ każda maszyna może mieć inny układ pamięci, a przypisanie pozycja może się zmieniać.

Bardziej złożonych danych często wymagają stosowania wielu słowy, dane te są zwykle przechowywane stosując oznaczenie typu.

Typ referencyjny Zmienna R1 R1 jest wartość przechowywana w pamięci adres gdzie (cyfrowe) lub pozycja adres pamięci pierwsze słowo się znajduje.

Adres pamięci nazywa się wskaźnik, który faktycznie istnieje jeszcze jedno słowo.

W odniesieniu do wielu rodzajów wskaźnik słowo może być w sąsiadujących adresów pamięci (układ pamięci jest ciągły), który jest obliczenie najbardziej wydajny sposób przechowywania, to może być przechowywany w pamięci, czyli rozproszone każde słowo wskazuje, gdzie następnego adresu pamięci słowa.

Gdy instrukcja przypisania r2 = R1, tylko odwołania (adres) jest kopiowany.

Jeżeli jest to wartość R1 zostanie zmieniona, wówczas wartość wszystkich cytowań zostaną zmodyfikowane do punktu, w tym przypadku, r2 również wpływ.


Krótka forma, użyj: = operator przypisania

Wiemy, że można automatycznie wnioskować typ zmiennej jest inicjowany przez zmienna systemowa jest pominięty, oświadczenie napisane na kluczowych deklaracja var jest rzeczywiście nieco zbędny, więc można w skrócie je jako: = 50 lub b: = false.

a i b typy (int i Bool) zostaną automatycznie wywnioskować kompilatora.

Jest to korzystna postać z wykorzystaniem zmiennych, lecz może być stosowany wyłącznie w korpusie funkcji, nie może być stosowany do deklarowania o przyporządkowaniu do zmiennych globalnych. Użyj operatorów: = może skutecznie stworzyć nową zmienną o nazwie oświadczenie inicjalizacji.

Środki ostrożności

Jeśli ten sam fragment kodu, nie możemy ponownie użyć tej samej nazwy dla zmiennej rachunku inicjującego, na przykład: a: = 20 nie jest dozwolone, kompilator wyświetli błąd żadnych nowych zmiennych po lewej stronie: =, ale = 20 jest możliwe, bo to jest ten sam zmienna jest przyporządkowana nowej wartości.

Jeśli używamy go przed zdefiniować zmienną A, otrzymasz błąd kompilacji undefined,: a.

Jeśli zadeklarujesz zmienną lokalną, ale nie są wykorzystywane w tym samym bloku kodu w nim, otrzymasz błąd kompilacji, tak jak w poniższym przykładzie tym o zmiennej a:

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

Spróbuj skompilować ten kod dostanie błądzadeklarowana i nie używany.

Ponadto, w celu uzyskania prostego przypisania nie wystarcza, to wartość ta musi być stosowany, tak wykorzystanie

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

usunie błędów.

Ale zmienne globalne są deklarowane, ale nie wolno używać.

>

Wiele zmiennych tego samego typu mogą być uznane w tej samej linii, na przykład:

var a, b, c int

Inne zmienne mogą być przypisane do tej samej linii, na przykład:

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

Powyższa linia zakłada, że ​​zmienne A, B i C zostały zgłoszone, w przeciwnym razie powinien on być stosowany w ten sposób:

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

Wartości te są po prawej stronie na tej samej kolejności przypisana do zmiennej w lewo, tak, że stosunek wynosi 5, wartość b znajduje się 7 wartość c wynosi "abc."

To zadanie nazywa się równolegle lub jednocześnie.

Jeśli chcesz zamienić wartości dwóch zmiennych, można po prostu użyć, B = B, A.

Pusty identyfikator _ służy również odrzucone wartości, takich jak wartości 5: _, b = 5, 7 został opuszczony.

_ Właściwie zmienna tylko do zapisu, nie można się jej wartość. Go to zrobić, ponieważ język, w którym trzeba wykorzystać wszystkie zmienne są deklarowane, ale czasami nie trzeba korzystać ze wszystkich wartości zwracane z funkcji otrzymanej.

Przypisanie Parallel służy również jako funkcja zwracać wiele wartości zwracanych, takich jak Val i błędu ERR jest tu jednocześnie uzyskane przez wywołanie funkcji func1: val, err = func1 (VAR1).