クラッシュコースパートV:定数,演算子および予約キーワード



定数
前の記事ではgoはimmutable型を持っていません.私は半分しかなかった.go定数const しかし、それはfinal Javaでconst Javascriptでconst GOは基本的なタイプで動作し、コンパイル時に知ることができます.ブール値、整数、浮動小数点、文字、ルーン文字、文字列と同様です.struct、funcまたはinterfaceのような複合型の定数を作成できません.すべての値はコンパイル時に知らなければなりません.入力されていないconstで、ほぼ任意の数値定数を格納できます.値を使用しようとすると問題が発生します.
const (
    BigConst = math.MaxFloat64 * math.MaxFloat64
)
このコードをコードの先頭に配置してコンパイルします.晴れでしょう.しかし、あなたがこれを印刷しようとするか、キャストしようとするならば
fmt.Println(BigConst) // this code wont compile
このコードはコンパイルされませんBigConst に合わないfloat64 .

京大理
我々は、定数のシリーズを生成することができますiota 定発電機.
const (
    a0 = iota // 0
    a1 = iota // 1
    a2 = iota // 2
    a3 = iota // 3
)
また、定数の一連の値を設定するために代入をスキップすることによって短縮を使用できます.
const (
    b0 = iota // 0
    b1        // 1
    b2        // 2
    b3        // 3
)
我々が1か2つの価値をスキップするならばiota 発電機は計数を続ける
const (
    c0 = iota // 0
    c1 = 43
    c2 = 75
    c3 = iota // 3
)
私は、これが役に立つというシナリオを想像することができません.しかし、それはそこにあります.iota 発電機あたりの再評価const ブロック.
const d0 = iota //0
const d1 = iota //0
const d2 = iota //0
const d3 = iota //0
const はほとんど似ていますenum 他の言語で、または、Mathmetical定数で.

演算子
GO演算子の数をサポートします.それらのうちのいくつかは算術演算子である.いくつかは句読点です.他のコンテキストに基づいて特定の意味があります.
+    &     +=    &=     &&    ==    !=    (    )
-    |     -=    |=     ||    <     <=    [    ]
*    ^     *=    ^=     <-    >     >=    {    }
/    <<    /=    <<=    ++    =     :=    ,    ;
%    >>    %=    >>=    --    !     ...   .    :
     &^          &^=
The official language spec 詳細にオペレータの各々について話してください.
値を計算するために使用される演算子は、優先順位を設定します.同じ優先順位の演算子は左から右に評価されます.
Precedence    Operator
    5             *  /  %  <<  >>  &  &^
    4             +  -  |  ^
    3             ==  !=  <  <=  >  >=
    2             &&
    1             ||
例えば
x := 5*10 + 6/3 | 7%4&15 
// (5*10) + (6/3) | (7%4)&15 => 50 + 2 | 3&15 => 52 | 3 = 55
これは曖昧さなしに評価する.しかし、これはあなたがそうすることができなかったので、あなたがそうする必要がないという理由の古典的な例です.これは人間に読めない.適切なブラケットを使用すると読みやすくなります.

予約キーワード
GOは予約されたキーワードのかなり小さいセットを持っています.他の言語にはかなり大きな予約されたキーワードがあります.C++ 95、Java 53、JS 64などのGOには25の予約済みのキーワードしかありません.予約されたキーワードの構文では、この名前で名前を指定できません.
break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var
このような限定されたキーワードのセットを持っていると、いくつかの欠点もある.
あなたが見ることができるように、タイプのどれも実際に予約されたキーワードの一部です.そのため、intという変数を作成することができます.
int := 10 // this is valid code
var c int = 10 // this doesnt work now

次の手順
これは、このGOクラッシュコースシリーズの第5部です.