go言語基礎1:データ型、変数と定数、タイプ変換

7291 ワード

長い間javaをしていましたが、最近はgo言語を研究する暇があります.javaと同じように、go言語も言語です.では、彼の学習方法はjavaとは遠くありません.前にjavaに入門したとき、自分で模索したことを覚えています.
暗くなるとつらいので、今go言語を勉強して、前の経験があるので、自分で基礎からgo言語を勉強します.
1   データ型
JAvaのデータ型は次のとおりです.
基本データ型と参照データ型、Stringは適用データ型なので比較的特殊なところがあります
byte,short,int,floate,double,Boolean,longを含む  ,char、これはjavaの基礎データ型です.
go言語:
基本データ型と適合データ型に分ける
基本データ型(元生産データ型):
整数(int)、int 8、int 16、int 32、int 64、int、さらに符号なしタイプ、uint 8、uint 16、uint 32、uint 64
Javaではbyteタイプが1バイト、局が8ビットなのでint 8はbyteの別の称号で、符号なしタイプ整形はそういう意味で、記号は含まれていないので正数しかありません
浮動小数点型(float 32,floate 64,complex 64,complex 128)は、complexが複素であることを意味し、iの二乗は-1、複素は整数部と複素部に分かれ、
複数の部分がiであり、コードでも1 iであれば   iと書くことはできませんが、変数をコンパイルするので、1の場合は1 iと書く必要があります.
ブール型、bool   trueとflaseのみで計算に参加できません
String   Javaでは大文字ですがgoでは中国語で書きます.
バイトbyte  int8,
文字rune:(javaのcharに相当するが文字)ここで注意しなければならないのは、go言語の符号化フォーマットutf-8なので、中国語はステーション3バイトなので「hello、中国」文字列の長さは6+3*2=12.
適合データ型(派生データ型):
ポインタ(pointer)、ポインタとは、アドレス値、浅いコピー伝送の値、深いコピー伝送のポインタを指す.
Array
カット(slice)、スライスは可変配列であり、makeメソッドで作成する必要があり、下位層は3つのptr,len,capを維持している.
マッピング(map)は、キー値タイプであり、makeで作成する必要があります.
関数(function)、は1段の操作コードの断片で、入参があって、出参があります
構造体(struct)、javaと理解できるクラス、beanオブジェクト
チャネル(channel)はgorotine間の通信に用いられる内容である
にへんすう
変数
変数
Go語の変数名は字母、数字、下線からなり、最初の文字は数字ではない.
Go構文では、定義されたローカル変数量が適用されていない場合はコンパイルエラーが発生します.名前:camelCasing⺳スタイル、下線で複数の単語を接続することを推奨しません
変数宣言:
var変数量名変数量タイプ    これは単一の変数で宣言され、変数は宣言時に初期化されます.この変数はnilです.
変数名:=変数値
変数名1、変数名2:=変数値1、変数値2     この方法では、変数名が定義されているとコンパイルエラーが発生することに注意してください.
匿名変数  Go語の関数は複数の値を返すことができるが、実際にはすべての戻り値に適用できるわけではない.それでは、アプリケーションを匿名変数量、アプリケーションを「」の下線で置き換えることができる.匿名変数量はアプリケーションのネーミングスペースを占めず、メモリを割り当てない
もちろん以下のように設定することもできます
var (
    a int
    b string
    c []float32
    d func() bool
    e struct {
        x int
        y string
    }
)

さんていすう
(一)、声明方式
1、定数は変数に対して一定不変の値であり、円周率のようなものである.定数は単純な値の識別子であり、プログラムの実行時には変更されない.2、定数のデータ型はブール型、数値型(整数型、浮動小数点型、複素数)のみである和字福列3、定数量の定義形式:const識別子[タイプ]=値は、コンパイラ器が変数量の値に基づいてそのタイプ明示タイプ定義を自動的に推定できるため、タイプ説明子[type]を省略することができる.const B string="Steven"暗黙タイプ定義:const C=「Steven」4、同じタイプの複数の宣言は、const WIDTH、HEIGHT=value 1、value 2 5、定数定義後に使用されず、コンパイル時にエラーが発生しないように略記することができます.(二)、定数は列挙(定数グループ)に使用されます.
    
const (
    Unknown = 0
    Female = 1
    Male = 2
)
const (
  a = 10
  b
  c
)
const (
    a = iota
    b = iota
    c = iota
)
println(a, b, c)
    :0 1 2
     iota    0,   iota              ,         
1;   a=0, b=1, c=2 
const (
    a = iota
    b 
    c 
println(a, b, c)
    :0 1 2
     iota    0,   iota              ,         
1;   a=0, b=1, c=2
const (
    i = 1<<iota
    j = 3<<iota
    k
    l
)
func main() {
fmt.Println("i=",i)
fmt.Println("j=",j)
fmt.Println("k=",k)
fmt.Println("l=",l)
}
      :
i= 1
j= 6
k= 12
l= 24
const (
    a1 = '  '
    b1
    c1 = iota
    d1
)
func main() {
fmt.Println(a1, b1, c1, d1)
}
      :
19968 19968 2 3

この場所は多くの人が「--」と好奇心を持っている.  印刷は19968   中国語の文字局の3バイト、対応する符号化はこれです
四  タイプ変換 
1、T(式)
データ型の前置括弧を用いた方式で行行型変換を行う.Tは変換するタイプを表す.表
達式には変数、数値、関数の戻り値などがあります.タイプ変換の場合、2種類の関係と範囲を考慮する必要があります.ブール型が発生するかどうかは他のタイプとは比べものになりません.2、floatとint間の変換はfloatがintを回転する際の精度の損失に注意する必要があります3、intがstringを回転します実はbyteまたはruneがstringを回転することに相当します.int値はASCIIコードの番号またはUnicode文字セットの番号です.stringに変換すると、ルート文字セットを検索し、対応する番号の文字を検索します.この値がUnicode番号の範囲を超えた場合、回転した文字列は乱符号として表示されます.例[備考:]ASCII文字セット数の10進数範囲は[30-39]ASCII文字セット大文字母の10進数範囲は[65-90]ASCII文字セット小文字母の10進数範囲は[97-122]Unicode文字セット漢字の範囲は[4 e 00-9 fa 5]10進数範囲は[199968-40869]4であり、string回転intは文字列回転int(cannot convert変数量(type string)to type int)を許可せず、strconvというパケットの下の関数でしか変換できない