Go 言語学習ノート - 変数

変数

変数の使い方

  • 変数の型を指定します。宣言で値が割り当てられない場合は、デフォルト値を使用します
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 に変換します

絶え間ない

導入

  1. 定数は const で変更されます
  2. 定数を定義したら、初期化する必要があります
  3. 定数は変更できません
  4. 定数スマート修飾 bool、数値型、文字列型

知らせ

  1. もっと簡潔に書く

    const (
    	a=1
        b=2
    )
    
  2. プロの書き方もあります

    const(
    	a=itoa
        b
        c
    )
    // a=0,b=1,c=2
    
  3. Go には、定数を大文字にする必要があるという仕様はありません。

  4. 変数のアクセス範囲は、最初の文字の大文字と小文字によって制御されます

おすすめ

転載: blog.csdn.net/weixin_45976751/article/details/127554955