Latest web development tutorials

言語変数を行きます

数学、コンピュータ言語の変数を保存することができ、または計算結果の値の抽象化を表すことができます。 変数は、変数名を介してアクセスすることができます。

行く言語変数名は最初の文字が数値でないとなっている文字、数字、アンダースコア、から構成されています。

変数の一般的な形式は、varキーワードを使用して宣言されています。

var identifier type

変数宣言

割り当て、デフォルトを使用する場合、最初に宣言を変数の型を指定します。

var v_name v_type
v_name = value

自己決意変数の型の値に基づいて第2、。

var v_name = value

第三に、省略するVAR、ノート:=可変左が所定の位置に宣言すべきではありませんが、それ以外の場合は、コンパイルエラーが発生します。

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

多変数の宣言

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

値型と参照型

すべてのint型、float型、ブール値、文字列のように、これらの基本的なタイプは、直接メモリに記憶されている値に変数のこれらのタイプを使用して、すべての値型です:

あなたは等号を使用する場合=などの変数の値を別の変数に割り当てられている、: j = i 、メモリiの値がコピーされます実際には:

次の例のように、変数i&アイのメモリアドレスを取得することができます。0xf840000040(各アドレスは異なる場合があります)。 値がスタックに変数の値の型を格納されています。

メモリアドレスは、マシンに依存して変化する、または実行後の異なるマシン上でも同じプログラムが異なるメモリアドレスを持つことになります。 各マシンは、別のメモリレイアウトを有していてもよく、位置の割り当ては変化し得るからです。

より複雑なデータは、多くの場合、複数の単語の使用を必要とし、これらのデータは、一般に、参照タイプを使用して格納されています。

参照型の変数R1、R1は、(デジタル)、または最初のワードのメモリアドレスの位置が配置されているメモリアドレスに格納された値です。

メモリアドレスが別の単語があり、実際にあったポインタと呼ばれています。

単語のポインタの種類の複数を参照して、ストレージの最も効率的な形式の計算である、連続したメモリアドレス(メモリレイアウトが連続している)であってもよく、これらはまたそれぞれ、分散メモリ・ワードに格納することができます言葉はどこに次のワードのメモリアドレスを示しています。

代入文R2 = R1、参照のみ(アドレス)がコピーされると。

R1の値が変更された場合、その後の値は、すべての引用は、この場合、ポイントに変更され、R2にも影響します。


=代入演算子:ショートフォームは、使用します

我々は、システム変数を宣言varキーワードに書かれた文は、実際に少し冗長で、省略されていることにより、あなたは自動的に変数の型が初期化されている推論できることを知っているので、我々は、それらを省略することができます:= 50またはb:=偽。

AとB型(int型とブール値)自動的にコンパイラを推定することになります。

これは、変数の使用の好ましい形態であるが、それは唯一の機能の体内で使用することができ、グローバル変数への代入と宣言するために使用することができません。 演算子を使用してください:=が効率的に初期化ステートメントと呼ばれる新しい変数を作成することができます。

注意事項

:コードの同じブロックした場合、我々は例えば、変数の初期化ステートメントに同じ名前を再利用することはできません= 20が許可されていない、コンパイラはエラーを左側には新しい変数表示されません:=を、しかし、それは、新しい値が割り当てられる同じ変数であるため= 20は、可能です。

:あなたはそれを使用している場合は、変数aを定義する前に、コンパイルエラーが未定義なります。

あなたはローカル変数を宣言しますが、その中にコードの同じブロック内で使用されていない場合は、そのようなどの変数次の例のように、コンパイルエラーが発生します。

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は、それ以外の場合はこのように使用されるべきで、宣言されていることを前提と

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

値が5になるように、これらの値は、左側の変数に割り当てられているのと同じ順序で、右側にある、b値は、cの値が「ABC」で、7です。

この割り当ては、並列または同時に呼ばれています。

あなたは二つの変数の値を交換したい場合は、単に、B = Bを使用することができます。

ブランク識別子_はまた、5の値として廃棄された値を、使用されている:_、B = 5、7が放棄されました。

_実際には、書き込み専用の変数は、その値を取得することはできません。 あなたはすべての変数を使用する必要がある言語が宣言されているので、これを行うに行くが、時にはあなたが得た関数からすべての戻り値を使用する必要はありません。

パラレル割り当ては、関数としても使用されるようヴァルやエラーなどの複数の戻り値は、ここで誤る返す同時にFUNC1関数を呼び出すことによって得られる:valを、ERR =関数func1(VAR1)。