変数
変数の使い方
- 変数の型を指定します。宣言で値が割り当てられない場合は、デフォルト値を使用します
var i int
- 値に応じて変数の型を自分で決定する
var num = 10.11
- 省略var
name := "tom"
//等价于
var name string
name = "tom"
注: **:=** の左側の変数は宣言しないでください。そうしないと、コンパイル エラーが発生します。
多変量宣言
- 方法 1: 同型
var n1,n2,n3 int
//等价于
var n1 int
var n2 int
var n3 int
- 方法 2: 異なるタイプ
var n1,name,n3 = 100,"tom",888
- 方法 3: 型派生
n1,name,n3 := 100,"tom",888
グローバル変数宣言
var n1 = 100
var n2 = 200
var name = "jack"
//等价于
var(
n1 = 100
n2 = 200
n3 = "jack"
)
シェーピングの使用状況の詳細
- Go の整数の型は、signed と unsigned に分けられます。int と uint のサイズはシステムに関連しています。
- Go の整数型はデフォルトで int として宣言されています
- プログラム内の変数のデータ型とバイト サイズを表示する
var n1 = 100
fmt.Printf("n1 的类型 %T,n1占用的字节数是 %d",n1,unsafe.Sizeof(n1))
- Go プログラムは、プログラムの通常の動作を保証しながら、占めるスペースが少ないデータ型を使用しようとします。
- ビット: コンピューターの最小記憶単位。バイト: コンピュータの基本的な記憶単位
浮動小数点の使用方法の詳細
- 浮動小数点数は、次の形式でマシンに格納されます。浮動小数点数 = 符号数 + 指数ビット + 仮数ビット
- 仮数部が失われ、精度が失われる可能性があります
- Go 浮動小数点型は、OS に関係なく、範囲とフィールド長が固定されています
- Go 浮動小数点型はデフォルトで float64 として宣言されています
- Go float 型は科学表記法をサポートします
num :=2.1234e2// 5.1234 * 10的2次方
num :=2.1234E2// 5.1234 * 10的2次方
num :=2.1234E-2// 5.1234 / 10的2次方
- 通常は float64 型を使用
文字種の用途の詳細
Go には特定の文字型はなく、通常はバイト型を使用します
バイト値をそのまま出力する場合は、対応する文字のコード値が出力されます
対応する文字を出力する必要がある場合は、出力をフォーマットする必要があります
var c1 byte = 'a'
var c2 byte = '0'
fmt.Printf("c1=%c,c2=%c\n",c1,c2)
- 文字定数は、一重引用符 ('') で囲まれた単一の文字です。
var c1 byte = 'a'
var c2 int = '中'
var c3 byte = '9'
- Go では、エスケープ文字 "\" を使用して、次の文字を特殊文字定数に変換できます。
- Go 言語の文字は UTF-8 を使用して英字をエンコードします----1 バイトの漢字----3 バイト
- Goでは文字の本質は整数で、そのまま出力すると文字に対応するUTD-8のコード値になります
- 数値を変数に直接割り当て、%c を押して出力をフォーマットすると、数値に対応する Unicode 文字が出力されます。
- 文字型はUnicodeコードに対応しているため、整数に相当する演算が可能
ブール使用法の詳細
-
bool型が占有する記憶域は1バイト
-
bool 型は true または false のみを取ることができます
-
bool 型を 0 または非ゼロに置き換えることはできません
文字列型の使用方法の詳細
-
Go 言語の文字列のバイトは、UTF-8 エンコーディングを使用して Unicode を表します
-
文字列が割り当てられると、その文字列は変更できなくなります。文字列は Go では不変です
-
文字列の 2 つの表現
1. 二重引用符はエスケープ文字を認識します
2. バッククォート ( `` )、改行や特殊文字を含む文字列のネイティブ形式での出力は、攻撃の防止、ソース コードの出力などに使用できます。
-
文字列連結
var str = "hello " + "world"
非常に長い文字列を連結するときは、別の行に書くことができます (前の行にプラス記号を書きます)
var str = "hello" + "world" + "hello" + "world"
データ変換の使用状況の詳細
-
Go のデータ型は自動的に変換されるのではなく、変換する必要があります
-
Go におけるデータ型の変換は、小さい範囲 ----> 大きい範囲 、または大きい範囲 ----> 小さい範囲 から表現できます。
-
変数に格納されたデータ(つまり、値)は変換され、変数自体のデータ型は変更されません
-
int64 から int8 への変換などの変換では、コンパイルはエラーを報告しませんが、変換結果はオーバーフローとして扱われ、期待した結果とは異なります。
基本データ型から文字列へ
方法 1: fmt.Sprintf
fmt.Sprintf("%参数",数据)
//例子
var num1 int = 99
var num2 float64 = 23.456
var myChar byte = 'h'
var str string
str = fmt.Sprintf("%d",num1)
str = fmt.Sprintf("%f",num2)
str = fmt.Sprintf("%c",myChar)
方法 2: strconv
//例子
var num1 int = 99
var num2 float64 = 23.456
var b bool = true
var str string
str = strconv.FormatInt(int64(num1),10)
str = strconv.FormatFloat(num2,'f',20,64)
str = strconv.FormatBool(b)
基本型への文字列
方法 1: strconv
var str string = "true"
var b bool
b,_ = strconv.ParseBool(str)
var str string = "1234590"
var n1 int
n1,_ = strconv.ParseInt(str,10,0)
予防:
- String 型を基本データ型に変換する場合は、String 型が有効なデータに変換できることを確認してください。「hello」が整数に変換された場合、Golang はそれを直接 0 に変換します
絶え間ない
導入
- 定数は const で変更されます
- 定数を定義したら、初期化する必要があります
- 定数は変更できません
- 定数スマート修飾 bool、数値型、文字列型
知らせ
-
もっと簡潔に書く
const ( a=1 b=2 )
-
プロの書き方もあります
const( a=itoa b c ) // a=0,b=1,c=2
-
Go には、定数を大文字にする必要があるという仕様はありません。
-
変数のアクセス範囲は、最初の文字の大文字と小文字によって制御されます