演算子
【開発環境】
OS:Win11(64ビット)
go version go1.19.4 windows/amd64
VSCode1.72.2、及びコマンドプロンプト
【演算子とは】
演算子(operator)は、数式やコンピュータプログラミング言語などで、各種の演算を表わす記号(シンボル)の事。
【Goの演算子】
Goには三項演算子はありません。すべて二項または単項演算子になります。
・二項演算子
四則演算子のみ整数と浮動小数点数、複素数をすべて対象にすることができる。それ以外はすべて整数のみが対象
![](https://blogimg.goo.ne.jp/user_image/15/8d/8723efdda011655b19af340dce547970.jpg)
算術演算子はほぼ他のプログラミング言語と同様に使用できますが、商(/)の仕様には注意が必要です。
整数同士の割り算、例えば100 / 3の計算をおこなった場合、計算結果は33.333…の小数になるように思えます。
しかし、Goでは計算対象の数値が整数型(int)である場合、計算結果もintになります。この例では、小数点以下は切り捨てられて33が結果になります。
計算結果を小数として求めたい場合は、計算対象の数値をfloat64等の浮動小数点数型に変換しておく必要があります。
サンプルプログラム「aplusb.go」
package main
import (
"fmt"
)
func main() {
var a int = 2
var b int = 5
fmt.Println("a = ", a) fmt.Println("b = ", b)
c := a + b
fmt.Println("a + b =", c)
}
実行
PS D:\GO言語\サンプルプログラム\Go-2\演算子> go run aplusb.go
a = 2
b = 5
a + b = 7
・単項演算子
![](https://blogimg.goo.ne.jp/user_image/2b/41/fc62412e0de0ae56372f11fa620a2255.jpg)
多くの言語ではビットの補数として0を使いますが、Goでは^を利用する点に注意してください。また、インクリメント・デクリメントと言う演算子はGoには無いので、下記のようにする
・サンプルコード
package main
import (
"fmt"
)
func main() {
i := 1
i++
a := i
fmt.Println(a)
}
・実行
PS D:\GO言語\サンプルプログラム\Go-2\演算子> go run aplusb.go
2
・比較演算子
比較演算子は、演算子の左右の値を比較した結果を求める。
![](https://blogimg.goo.ne.jp/user_image/7d/ff/0d4351d7d545a4b79635498722bd0b46.jpg)
・論理演算子
論理演算はブーリアン型 (Boolean) に対して行われて、真 (true) か偽 (false) の結果を返します
![](https://blogimg.goo.ne.jp/user_image/46/22/d58c79aaf4e6f244b3c089e72c6e7875.jpg)
・代入演算子
代入演算子は、演算子の右の値を左の変数に代入します
![](https://blogimg.goo.ne.jp/user_image/5a/16/d7226ad2106333d63e8273c2f21e1b8e.jpg)
2つの演算子は同じ関数内で使えない!使いたい時は{}を使う
func main() {
var n = 123
fmt.Println(n)
{
s := 256
fmt.Println(s)
}
}
実行
PS D:\GO言語\サンプルプログラム\Go-2\演算子> go run aplusb.go
123
256
・アドレル演算子
アドレル演算子は、演算子の左右の値に作用
![](https://blogimg.goo.ne.jp/user_image/64/ba/54f3ace51f2eb0c1e6c14d0a0c6d90a9.jpg)
例文
c = &a
or
b = *p
・送受信演算子
送受信演算子は、チャンネルからの値を送信、受信する時に使う
![](https://blogimg.goo.ne.jp/user_image/3f/57/42e9dfc8a7c02571a445d58c1a3f2657.jpg)
・演算子の結合順
番号が大きいほど優先順位が高い
![](https://blogimg.goo.ne.jp/user_image/6e/6b/e6a613608b34930e4f613c7bdd32105b.jpg)
※コメント投稿者のブログIDはブログ作成者のみに通知されます