golang式
式#シキ#
キーワード
キーワードとは、プログラマがシンボルとして使用しないようにプログラミング言語によって保持される文字シーケンスを指す.したがって、キーワードは予約語とも呼ばれ、プログラミング言語ごとに独自のキーワードがあり、使用の観点から、Go言語の25のキーワードを以下の3つに分けることができます.
カテゴリ
キーワード
プログラム宣言
import, package
エンティティの宣言と定義
var,const,type,struct,func,interface,map,chan
プロセス制御
if,else,switch,case,fallthrough,default,for,range,continue,break,go,select,defer,goto,return
演算子
演算子は、特定の計算または論理操作を実行するための記号です.Go言語のすべての演算子、区切り記号、およびその他の特殊な記号は、次の表を参照してください.
演算子の分類:算術演算子 以下はGo言語の演算子で、A値が10、B値が20であると仮定します.
演算子
説明
≪インスタンス|Instance|emdw≫
A+B
プラス
A+B出力結果30
A-B
減らす
A-B出力結果-10
A*B
乗ずる
A*B出力結果200
A/B
を除いて
B/A出力結果2
B%A
余剰を求める
B%A出力結果0
A++
じこぞうか
A++出力結果11
A--
自己減算
A-出力結果9関係演算子 以下はGo言語の関係演算子で、A値が10、B値が20であると仮定します.
演算子
説明
≪インスタンス|Instance|emdw≫
A==B
2つの値が等しいかどうかを確認し、等しい場合はTrueを返します.そうでない場合はFalseを返します.
(A==B)はFalse
A!=B
2つの値が等しくないかどうかを確認し、等しくない場合はTrueを返します.そうでない場合はFalseを返します.
(A!=B)はTrue
A>B
左の値が右の値より大きいかどうかを確認し、Trueを返す場合はFalseを返します.
(A>B)はFalse
A
左の値が右の値より小さいかどうかを確認し、Trueを返す場合はFalseを返します.
(AA>=B
左の値が右の値より大きいかどうかを確認し、Trueを返す場合はFalseを返します.
(A>=B)はFalse
A<=B
左の値が右の値以下であるかどうかを確認し、Trueを返す場合はFalseを返します.
(A<=B)はTrue論理演算子 次の表に、すべてのGo言語の論理演算子を示します.A値をTrue,B値をFalseとする
演算子
説明
≪インスタンス|Instance|emdw≫
A&&B
論理AND演算子.両方のオペランドがTrueの場合、条件True、そうでない場合False
(A&&B)はFalse
A||B
論理OR演算子.両方のオペランドに1つのTrueがある場合、条件True、そうでない場合False
(A‖B)はTrue
!(A && B)
論理NOT演算子.条件がTrueの場合、論理NOT条件False、そうでない場合True
!(A&&B)はTrueビット演算子 次の表に、すべてのGo言語のビット演算子を示します.A値が0101、B値が0011、C値が1、D値が8とする
演算子
説明
≪インスタンス|Instance|emdw≫
A&B
ビットと演算によって、両方とも1の結果が1になります.
0101 & 0011 = 0001
A|B
ビットまたは演算によって、両側の少なくとも1つが1の結果は1です.
0101 | 0011 = 0111
A^B
ビットまたは演算によって、両側に1つだけ結果が1になります.
0101 | 0011 = 0110
^A
ビットによる逆演算
^0111 = 1000
A&^B
ビットクリア演算
0101 &^ 0110 = 0001
C<<2
ビット左シフト演算
1<<2 = 4
D>>2
ビット右シフト演算
8>>2 = 2賦値演算子 次の表に、すべてのGo言語の割り当て演算子を示します.
演算子
説明
≪インスタンス|Instance|emdw≫
=
単純な代入演算子
C=A+B A+B式の結果をCに割り当てる
+=
加算後に値を付ける
C+=AはC=C+Aに等しい
-=
減算後に値を割り当てる
C-=AはC=C-Aに等しい
*=
乗算後に値を付ける
C = A=C A
/=
相殺してから値をつける
C/=A=C=C/A
%=
余剰を求めてから値をつける
C%=A=C=C%A
<<=
左に移動
C<<=2はC=C<<2に等しい
>>=
右に移動
C>>=2=C=C>>2
&=
ビットロジックと付与
C&=2はC=C&2に等しい
|=
ビットロジックまたは代入
C|=2はC=C|2に等しい
^=
ビット論理異和付与
C^=2=C=C^2その他の演算子 次の表に、Go言語のその他の演算子を示します.
演算子
説明
≪インスタンス|Instance|emdw≫
&
アドレッシング演算子
&aは変数aの実際のアドレスを与える
*
ポインタ演算子
*aは、ポインタ変数aが指す値を与える
受信演算子
x,ok :=
:=
短い変数宣言子
var x=100はx:=100と書くことができる優先度 1つの式に複数の演算子が含まれている場合、演算子の演算優先度に関連します.Go言語では、1つの演算子が最も優先度が高く、次の表には、Go言語の2つの演算子優先度が高いものから低いものまでリストされています.
また、以下の点は日常開発において注意すべき点です.は、カッコを使用することによって、ある式の全体的な演算優先度 を高めることができる.ビット動作 ビット操作に加えて、オペランドのタイプは同じでなければなりません.そのうちの1つが表示タイプ宣言のない定数である場合、その定数オペランドは自動的に変換されます.たとえば、次のようになります.
シフト右演算数は、符号なしまたは変換可能な非表示タイプ定数でなければなりません.たとえば、次のようにします.
1.
2.
3.
キーワード
キーワードとは、プログラマがシンボルとして使用しないようにプログラミング言語によって保持される文字シーケンスを指す.したがって、キーワードは予約語とも呼ばれ、プログラミング言語ごとに独自のキーワードがあり、使用の観点から、Go言語の25のキーワードを以下の3つに分けることができます.
1.
2.
3.
カテゴリ
キーワード
プログラム宣言
import, package
エンティティの宣言と定義
var,const,type,struct,func,interface,map,chan
プロセス制御
if,else,switch,case,fallthrough,default,for,range,continue,break,go,select,defer,goto,return
演算子
演算子は、特定の計算または論理操作を実行するための記号です.Go言語のすべての演算子、区切り記号、およびその他の特殊な記号は、次の表を参照してください.
+ & += &= && == != ( )
- | -= |= || >= { }
/ <> %= >>= -- ! ... . :
&^ &^=
演算子の分類:
1.
2.
3.
4.
5.
6.
演算子
説明
≪インスタンス|Instance|emdw≫
A+B
プラス
A+B出力結果30
A-B
減らす
A-B出力結果-10
A*B
乗ずる
A*B出力結果200
A/B
を除いて
B/A出力結果2
B%A
余剰を求める
B%A出力結果0
A++
じこぞうか
A++出力結果11
A--
自己減算
A-出力結果9
演算子
説明
≪インスタンス|Instance|emdw≫
A==B
2つの値が等しいかどうかを確認し、等しい場合はTrueを返します.そうでない場合はFalseを返します.
(A==B)はFalse
A!=B
2つの値が等しくないかどうかを確認し、等しくない場合はTrueを返します.そうでない場合はFalseを返します.
(A!=B)はTrue
A>B
左の値が右の値より大きいかどうかを確認し、Trueを返す場合はFalseを返します.
(A>B)はFalse
A
左の値が右の値より小さいかどうかを確認し、Trueを返す場合はFalseを返します.
(AA>=B
左の値が右の値より大きいかどうかを確認し、Trueを返す場合はFalseを返します.
(A>=B)はFalse
A<=B
左の値が右の値以下であるかどうかを確認し、Trueを返す場合はFalseを返します.
(A<=B)はTrue
演算子
説明
≪インスタンス|Instance|emdw≫
A&&B
論理AND演算子.両方のオペランドがTrueの場合、条件True、そうでない場合False
(A&&B)はFalse
A||B
論理OR演算子.両方のオペランドに1つのTrueがある場合、条件True、そうでない場合False
(A‖B)はTrue
!(A && B)
論理NOT演算子.条件がTrueの場合、論理NOT条件False、そうでない場合True
!(A&&B)はTrue
演算子
説明
≪インスタンス|Instance|emdw≫
A&B
ビットと演算によって、両方とも1の結果が1になります.
0101 & 0011 = 0001
A|B
ビットまたは演算によって、両側の少なくとも1つが1の結果は1です.
0101 | 0011 = 0111
A^B
ビットまたは演算によって、両側に1つだけ結果が1になります.
0101 | 0011 = 0110
^A
ビットによる逆演算
^0111 = 1000
A&^B
ビットクリア演算
0101 &^ 0110 = 0001
C<<2
ビット左シフト演算
1<<2 = 4
D>>2
ビット右シフト演算
8>>2 = 2
演算子
説明
≪インスタンス|Instance|emdw≫
=
単純な代入演算子
C=A+B A+B式の結果をCに割り当てる
+=
加算後に値を付ける
C+=AはC=C+Aに等しい
-=
減算後に値を割り当てる
C-=AはC=C-Aに等しい
*=
乗算後に値を付ける
C = A=C A
/=
相殺してから値をつける
C/=A=C=C/A
%=
余剰を求めてから値をつける
C%=A=C=C%A
<<=
左に移動
C<<=2はC=C<<2に等しい
>>=
右に移動
C>>=2=C=C>>2
&=
ビットロジックと付与
C&=2はC=C&2に等しい
|=
ビットロジックまたは代入
C|=2はC=C|2に等しい
^=
ビット論理異和付与
C^=2=C=C^2
演算子
説明
≪インスタンス|Instance|emdw≫
&
アドレッシング演算子
&aは変数aの実際のアドレスを与える
*
ポインタ演算子
*aは、ポインタ変数aが指す値を与える
受信演算子
x,ok :=
:=
短い変数宣言子
var x=100はx:=100と書くことができる
|
5 | * / % <> & &^
4 | + - | ^
3 | == != >=
2 | &&
1 | ||
また、以下の点は日常開発において注意すべき点です.
const v = 20
var a byte = 10
b := a + v // v byte/uint8
const f float32 = 1.2
d := f + v // v float32
シフト右演算数は、符号なしまたは変換可能な非表示タイプ定数でなければなりません.たとえば、次のようにします.
b := 2
x := 1 <
, , :
a := 1.0 <
には できません. した としてのみ できます.たとえば、 のようにします.a := 1
++a //syntax error: unexpected ++
if (a++) > 1{ //syntax error: unexpected ++
}
a++
p := &a
*p++ //*p++ (*p)++
ポインタ ポインタをメモリアドレスと することはできません.メモリアドレスはメモリ の バイト の の ですが、ポインタはアドレスを するための に し、 もメモリ を します. えば、 のp:=&aa :=1 p := &a
fmt.Println(&a,a)
fmt.Println(&p,p,*p)
:0x1040e0f8 10x1040a120 0x1040e0f8 1
すべてのオブジェクトがアドレッシングできるわけではありません.たとえば、 のようにします.m := map[string]string{"hello":"go"}
println(&m["hello"]) //cannot take the address of m["hello"]
ポインタタイプは とタイプ はできません. しい をサポートします.a := 10
p := &a
p++ //invalid operation: p++ (non-numeric type *int)
p2 := &a
println(p == p2) //
ゼロ オブジェクト( されたが が されていない)のオブジェクトアドレスが しいかどうかは、 な と があります.Goコンパイラは、 によって なる を います. の から、ユーザーはメモリがどこ(スタック)に り てられているかに を つ はありませんが、nilではありません.たとえば、 のようにします.var a,b int // 0, , , nil
println(&a , &b)
println(&a == &b,&a == nil)
:
0x10429f64 0x10429f60
false false
var a,b struct{}
println(&a , &b)
println(&a == &b,&a == nil)
:
0x10429f65 0x10429f65
true false
ポインタには、メンバー の-> はありません.たとえば、 のように「.」を に します.a := struct{
x int
}{}
a.x = 10 // a->x
p := &a
p.x += 10 // p->x
println(p.x)
の については したように、Go では、 ( 、スライス、 、 )の にはいくつかの がありますが、 の にはこれらの はありません.たとえば、 のようになります.1.
2. ,
3. ","
4. , ","
は のとおりです.type stu struct{
name string
age int
}
b := stu{
"zhang",
20 //unexpected semicolon or newline, expecting comma or },
}
b := stu
{ //syntax error: unexpected }, expecting expression,
"zhang",
20,
}
var data stu = {"wang",20} //syntax error: missing operand,
:
ディスカッション :675020908