【Go言語に慣れる30日】Goの変数・定数・演算子4つ

I.はじめに

ここに画像の説明を挿入

Goシリーズの記事:

  1. GOの始まり: Javaを手にGolangの世界へ
  2. 2 Go 開発環境のセットアップ、Hello World プログラムの実行
  3. 3 Go プログラミング仕様と API パッケージ

Go コラム配信リンク: https://blog.csdn.net/saintmm/category_12326997.html

2. 変数

変数は、メモリ内のデータ記憶領域の識別子に相当します。

1. 変数の基本的な使い方

変数は、宣言、代入、使用の 3 つのステップで使用されます。

  • 変数宣言は の形式var 变量名 数据类型を。
package main

import "fmt"

func main() {
    
    
	// 1. 变量的声明
	var age int
	// 2. 变量的赋值
	age = 18
	// 3. 变量的使用
	fmt.Println("age = ", age)
}

変数の宣言と代入は 1 つの文にまとめることができます。

var age int = 19

変数が繰り返し定義されると、GoLand でエラーが報告されます。
ここに画像の説明を挿入

変数を割り当てると、データが型と一致せず、次のようなエラーが発生します。

ここに画像の説明を挿入

2. 変数を使用する複数の方法

1) グローバル変数

グローバル変数は、関数の外部で定義され、複数の関数で使用できる変数です。

package main

import "fmt"

var globalV1 = 100
var globalV2 = 1.11

func main() {
    
    
	variable1()
	//variable2()
}

func variable1() {
    
    
	fmt.Println(globalV1)
	fmt.Println(globalV2)
}

func variable2() {
    
    
	fmt.Println(globalV1)
	fmt.Println(globalV2)
}

グローバル変数が複数ある場合、毎回varで宣言するのは面倒なので、Goでは型の異なる複数の変数を一度に宣言することをサポートしています。

var (
	globalV1= 3.33
	globalV2= "Hello"
)

2) ローカル変数

ローカル変数は、関数 {} で宣言された変数です。

1> 変数の型を指定して割り当てます。

var v1 int = 18
fmt.Println(v1)

2> 変数のタイプを指定しますが、値は割り当てず、デフォルト値を使用します。

var v2 int
fmt.Println(v2)

3> 変数の型が記述されていない場合、プログラムは=数値(自動型推論)。

var v3 = "saint"
fmt.Println(v3)

:=4> var の代わりに変数を宣言して代入するために使用できます。

v4 := "bob"
fmt.Println(v4)

5> 同じ型の複数の変数を宣言します。

var n1, n2, n3 int
fmt.Println(n1)
fmt.Println(n2)
fmt.Println(n3)

6> 異なる型の複数の変数を宣言します。

var n4, name, n5 = 9, "jack", 7.8
fmt.Println(n4)
fmt.Println(name)
fmt.Println(n5)

// 省略var的方式
n6, sex := 6.9, "man"
fmt.Println(n6)
fmt.Println(sex)

3) 割り当てを破棄する

識別子を使用して_値を受け取ります。割り当ては破棄できます。

破棄割り当ては、一度に 2 つ以上の値が取得され、値の 1 つが望ましくないシナリオで使用する必要があります。

var _,_,num = 1,2,3
fmt.Println("num = ",num)

コード スニペットは値 3 のみを受け入れ、それを num 変数に割り当てます。

3. Go と Java の変数の比較

  1. 変数の宣言と代入の方法が異なり、Java は变量类型 变量名 = 变量值、Go はvar 变量名 变量类型 = 变量值

    // Java 变量类型  变量名 = 变量值
    String name = "li_ming";
    
    // Go var  变量名  变量类型 = 变量值
    var name string = "li_ming"
    
  2. Java の変数宣言では変数のデータ型を指定する必要がありますが、Go の変数宣言では変数のデータ型を指定する必要はありません (型は自動的に推測されます)。

    // go类型自动推断
    var v3 = "saint"
    
  3. Java メソッドの内部および外部での変数の割り当てはのみ使用できます=。Go の変数宣言の割り当ては、関数内では省略 ( ) でき变量名 := 变量值、関数の外部でのみ使用できます。var 变量名 = 变量值

    // 函数内部可以直接使用 【 变量名 := 变量值 】 赋值,函数外不可以
    name := "saint"
    
  4. Go は複数変数の代入を同時にサポートしており、代入の喪失(値を受け取るために識別子を使用すると_代入を破棄できますが、一度に 2 つ以上の値が取得され、そのうちの 1 つの値が取得される場合には使用する必要があります)望まれていません)

    // 多变量同时赋值
    var name,age = "saint",18
    
    // 丢弃赋值,示例中:把 1和2丢弃 只取3
    var _,_,num = 1,2,3
    fmt.Println("num = ",num)
    

3. 定数

Go の定数宣言と変数宣言の唯一の違いは、定数宣言の使用constと変数宣言の使用ですvarフロントエンドをしばらく書いたことがある人は、Go の定数と変数の宣言がフロントエンドと似ていることがわかるでしょう。

//const  常量名  常量类型 = 常量值   显示推断类型
const name string = "const_sanint"
//隐式推断类型
const name2 ="const_sanint2"

1. GoとJavaの定数の比較

Go の定数と Java の定数には本質的な違いがあります。

  • Go の定数はコンパイル中に決定できる量を指しますが、Java の定数はJVM跑起来后赋值的値 ( ) が割り当てられた後に変更できない量を指します。
  1. 定数の宣言方法は異なります。Java はfinal修饰符 常量类型 常量名 = 常量值、Go はconst 常量名 常量类型 = 常量值

    // Java final修饰符   常量类型   常量名 =  常量值;
    public static final String TAG = "A";
    
    // go const  常量名  常量类型 = 常量值   显示推断类型
    const name string = "const_li_ming"
    // go 隐式推断类型
    const name2 ="const_xiao_hong"
    

3. オペレーター

演算子は、データの操作、代入、および比較を表すために使用される特殊な記号です。Go で一般的に使用される演算子は次のとおりです。

ここに画像の説明を挿入

ここでは Java 言語の使い方とほぼ同じですが、算術演算子の++--その他の演算子について説明します。

1. 算術演算子 ++、-

++ 自己インクリメント 1 演算、 – 自己デクリメント、マイナス 1 演算。

var a int = 10
a++
fmt.Println(a)
a--
fmt.Println(a)

Java との違い:

  • Go では++--の操作は非常に単純で、単独でのみ使用でき、操作に参加することはできません。たとえば、 、age = ++age + 10この種の複雑な操作は許可されません。
  • Go では、++--変数の後にのみ記述でき、変数の前には記述できません (--a ++aこれらはすべて間違った書き方です)

2. 演算子 &, *

Go に&*特別な目的があります:

  • &: 変数の格納アドレスを返します。
  • *: ポインタ変数に対応する値を取得します
package main

import "fmt"

func main() {
    
    
	var age int = 18
	fmt.Println("age对应的存储空间内存地址为:",&age)

	// 指针变量 ptr,指向age在存储空间的内存地址
	var ptr *int = &age
	fmt.Println(ptr)
	fmt.Println("ptr这个指针指向的具体数值为:",*ptr)
}

ポインタの内容については以下の記事を参照してください。

4. まとめ

変数/定数の宣言と代入に関して、Java と比較して、Go にはいくつかのユニークなプロパティがあります。

  1. 異なる型の複数の変数/定数の同時宣言のサポート。
  2. サポート型自動推論
  3. 割り当ての破棄がサポートされています。

さらに、定数については、Java と Go では認識が異なります。

  • Java では、JVM の実行後に定数値が一度割り当てられ、後で変更することはできないと考えられます。
  • Go の定数はコンパイル時に決定できる量であり、変更することもできません。

Go の算術演算子はJava のような複雑な演算では使用できず、最も単純な方法でのみ使用できます++--

そして、Goには特別な目的があります&*

おすすめ

転載: blog.csdn.net/Saintmm/article/details/130839198