ディレクトリ
まず、基本的なデータ型のgolang
- 6つの基本的なデータタイプがあります。
- 整数
- フロート
- 複合型
- ブーリアン
- 文字列型
- バイトとルーンタイプ
1.整数
- かどうかのシンボルに応じて2つのカテゴリに分けます
署名された(1)(範囲は負、正の数であり、0です)
int8、int16、int32、int64
長さ、数は、バイナリを示し- これは
uint8
、それは、我々が知っているbyte
タイプ、int16
対応するC言語short
、タイプをint64
C言語に対応したlong
タイプ。 例:
int8
範囲(127 -128)の整数、正よりも負の数であります
(2)符号なし(正の数及び範囲は、0です)
uint8、uint16、uint32、uint64
例:
uint8
範囲(0〜255)が整数であります
(3)特殊整数
uint
:32ビットオペレーティングシステムは、uint32
64ビットオペレーティングシステムでありますuint64
int
:32ビットオペレーティングシステムは、int32
64ビットオペレーティングシステムでありますint64
uintptr
:ポインタを格納するための符号なし整数、
- 注:使用
int
及びuint
タイプは、それは32ビットまたは64ビットの整数であると仮定するが、考慮することができない場合int
とuint
は異なるプラットフォーム上で異なっていてもよいです。
(4)デジタルリテラル構文
Go1.13バージョンを発表デジタルリテラル構文が後、それは二進数定義進または16進浮動小数点形式で容易開発することです。表現4種類の合計。
例
1. v := 0b00101101, 代表二进制的 101101,相当于十进制的 45 2. v := 0o377,代表八进制的 377,相当于十进制的 255 3. v := 0x1p-2,代表十六进制的 1 除以 2²,也就是 0.25 4. v := 123_456 等于 123456
2.フロート
ゴー言語のサポート2つの浮動小数点数:
float32
とfloat64
フロートを印刷する場合、使用できる
fmt
動詞とパッケージを%f
次のように、:package main import ( "fmt" "math" ) func main() { fmt.Printf("%f\n", math.Pi) fmt.Printf("%.2f\n", math.Pi) }
3.複合型
分割
complex64
とcomplex128
例
var c1 complex64 c1 = 1 + 2i var c2 complex128 c2 = 2 + 3i fmt.Println(c1) fmt.Println(c2)
実部と虚部が複数存在する
complex64
実部と虚部32、complex128
実部と虚部が64
4.ブール
他の言語では、それは2つのブール値
true
とfalse
- 注意:
- ブール型変数のデフォルト値
false
- 言語は、ブール型に整数のキャストには許可されていません
- 値に参加することはできませんブール演算は、他のタイプに変換することはできません。
- ブール型変数のデフォルト値
文字列型
- 文字列の言語の実装が使用中に入る
UTF-8
コーディング - 値は文字列で二重引用符の内容
(1)共通の文字列エスケープ
エスケープ | 説明 |
---|---|
\r |
キャリッジ(トップに戻ります) |
\n |
改行(次の行の同じ列位置) |
\t |
タブ |
\' |
単一引用符 |
\" |
二重引用符 |
\\ |
バックスラッシュ |
(2)複数行の文字列
アンチ引用符を使用することができます
//单行字符串 s1 := "字符串内容" //多行字符串 s1 := `第一行 第二行 第三行 `
ライン間のバッククォートの変更は、文字列内の改行ようになりますが、すべてのエスケープ文字は無効であり、テキストとして出力されます。
(3)一般的に使用されるメソッド列
方法 | 入門 |
---|---|
len(str) |
長さを求めます |
+或fmt.Sprintf |
文字列の連結 |
strings.Split |
分割 |
strings.contains |
含めるかどうかを決定します |
strings.HasPrefix,strings.HasSuffix |
プレフィックス/サフィックス解析 |
strings.Index(),strings.LastIndex() |
発生した部分文字列の位置 |
strings.Join(a[]string, sep string) |
操作に参加 |
6. byte
とrune
タイプ
ゴー言語の文字は、2があります。
byte 和 rune
種類- 各要素は文字の文字列と呼ばれています。あなたは、文字または単一の文字列を横断することによって得ることができます。
文字が包ま単一引用符を使用します
例
var a := '中' var b := 'x'
(1)byte
uint8
入力するか、バイトのタイプが表すと呼ばれるASCII码
キャラクターをGoはUnicodeベースのテキスト処理がより便利であるように、Unicodeを処理するための特別なルーンの種類を使用して、あなたはまた、バイトタイプがデフォルトの文字列処理、パフォーマンス、およびスケーラビリティもの世話をする必要が使用することができます
(2)rune
rune
Aを表すType、UTF-8字符
あなたは中国語、日本語、または他の複雑な文字を処理する必要があるときは、使用する必要がある
rune
タイプを。rune
それは実際にタイプですint32
(3)まとめ(byte
およびrune
対照)
GoはUnicodeベースのテキスト処理がより便利であるように、Unicodeを処理するための特別なルーンの種類を使用して、あなたはまた、バイトタイプがデフォルトの文字列処理、パフォーマンス、およびスケーラビリティもの世話をする必要が使用することができます
例
// 遍历字符串 func traversalString() { s := "hello沙河" for i := 0; i < len(s); i++ { //byte fmt.Printf("%v(%c) ", s[i], s[i]) } fmt.Println() for _, r := range s { //rune fmt.Printf("%v(%c) ", r, r) } fmt.Println() } 打印结果: // 104(h) 101(e) 108(l) 108(l) 111(o) 230(æ) 178(²) 153() 230(æ) 178(²) 179(³) // 104(h) 101(e) 108(l) 108(l) 111(o) 27801(沙) 27827(河)
我々は単にバイトで中国語を含む文字列を横断することができないので、次のUTF8は、3~4バイトの漢字をコードするので、そうでなければ、上記の例の最初の行の出力がもたらされます
- Pythonで同様の言語の文字列と文字列の外出、バイナリストリングの長さは、その長さになるように底部層は、バイト配列であり、それらは直接バイナリフォーマットすなわちに変換することができる
[]
byte`タイプ。 ルーンの種類を表すために使用されるUTF8文字は、文字が一つ以上のバイトで構成ルーン
(4)文字列を変更します
最初に変換する文字列の必要性を変更する
[]rune
か、[]byte
への変換が完了した後、string
。どちらの変換がしますメモリの再割り当て、バイト配列をコピーします例
func changeString() { s1 := "big" // 强制类型转换 byteS1 := []byte(s1) byteS1[0] = 'p' fmt.Println(string(byteS1)) // "pig" s2 := "白萝卜" runeS2 := []rune(s2) runeS2[0] = '红' fmt.Println(string(runeS2)) // "红萝卜" }
7.型変換
囲碁言語のみキャスト、ない暗黙の型変換。使用している場合、この構文は、変換のみの2種類の間でサポートすることができます
基本的な文法のキャスト
T(表达式) // T表示要转换的类型 ,表达式包括变量、复杂算子和函数返回值等.
例としてキャスト
func sqrtDemo() { var a, b = 3, 4 var c int // math.Sqrt()接收的参数是float64类型,需要强制转换 c = int(math.Sqrt(float64(a*a + b*b))) fmt.Println(c) }