友人の唯一のPython言語の経験のために、直接使用するために使用Pythonでの単語の文を、理解していない可能性が、彼らはどのようなタイプの宣言はありません。
ゴー言語は静的に型付けされた言語、原因コンパイル時、コンパイラのチェック変数の型である、それはすべての変数がクリアタイプを持っている必要があります。
変数を使用する前に、我々は宣言する必要があります。宣言された型は、あなただけで、その型の変数に値を割り当てることができることが合意されています。
単にキーワードの最初の二つはまた、定数を定義するために使用することができ、一般的な宣言するための4つの方法、ありvar
になるがconst
可能に。
最初:変数を宣言するために行
var <name> <type>
ここでvarキーワード(固定)、名前、型、型で、変数名です。
VARは、指定されたタイプが、使用されるが、暗黙的に移動は、文字列型は、空の文字列に初期化されるint型は、0に初期化され、0.0に初期化フロート、bool型をfalseに初期化され、ポインタとして、初期化されますnilに初期化と入力します。
あなたは声明の中で処理したい場合は、また、初期化の方法によって、あなたはこれを書くことができます
var name sting = "Python编程时光"
次のように繰り返しのコードを記述していないために、あるファイルに完全なコードを行く、完全なフォローアップはもはやコードに装着され、ちょうどキーコードを貼り付けていません
package main
import "fmt"
func main() {
var name string = "Python编程时光"
fmt.Println(name)
}
ビューの右側(右側値、右辺値)ポイントの値は、明らかに文字列型である(ここに行くにはダブルとシングル引用符がここに、同じではありません単一引用符と二重引用符Pythonの同等で、ということが、注意すべき)文字のルーンの種類を示す一重引用符で、文字列を示し、以後の説明は別途になります二重引用符を使用してください、それゆえに減少させることができます
var name = "Python编程时光"
小数点を使用して正しい値は、ケース内のタイプを指定しない場合、コンパイラは変数を配置します(より大きなメモリ空間を占有)のfloat64として宣言されていますが、多くの場合、我々はこのような高い精度を必要としません
この場合、それは型を指定することをお勧めします、怠惰なことはありません
var rate float32 0.89
第二は:一緒に複数の変数を宣言します
複数の列に加えて宣言複数の変数は、上記に応じて書き込むことができるだけでなく、次のように書くことができます。
var (
name string
age int
gender string
)
第三:宣言し、変数を初期化
使用すると:=
(または短い書かれた文の導出方法の型宣言:コンパイラが自動的に左の値の対応するタイプの適切な型の値を推測します)、変数を宣言することができ、および(明示的に)それらを初期化します。
name := "Python编程时光"
// 等价于
var name string = "Python编程时光"
// 等价于
var name = "Python编程时光"
しかし、この方法では、内部機能のためにのみ使用することができます制限があります
第四:宣言し、初期化複数の変数
name, age := "wangbm", 28
この方法は、多くの場合、変数を交換するために使用されます
var a int = 100
var b int = 200
b, a = a, b
フィフス:ポインタ変数を宣言するための新しい機能
ここでは最初のポインタの関連コンテンツについて話をします。
2種類の変数普通变量
と指针变量
共通の変数は、データそのものが格納され、ポインタが可変アドレスデータに格納されています。
次のコードは、共通変数は、年齢、コンテンツ28であるが記憶されており、可変年齢PTRの値は、メモリアドレスに配置されている:0xc000010098
package main
import "fmt"
func main() {
var age int = 28
var ptr = &age // &后面接变量名,表示取出该变量的内存地址
fmt.Println("age: ", age)
fmt.Println("ptr: ", ptr)
}
輸出
age: 28
ptr: 0xc000010098
そして、ここでは、新しい機能が内蔵されている機能ゴーで言います。
匿名の変数の型タイプがタイプタイプのゼロ値に初期化されて作成されます式new(タイプ)を使用して、変数のアドレスポインタ戻り値の型にされて戻ります*Type
。
package main
import "fmt"
func main() {
ptr := new(int)
fmt.Println("ptr address: ", ptr)
fmt.Println("ptr value: ", *ptr) // * 后面接指针变量,表示从内存地址中取出值
}
輸出
ptr address: 0xc000010098
ptr value: 0
変数と変数の変数宣言文は、新しいと違いはありません作成する一般的な方法を作成し、一時的な変数名を宣言する必要はありませんに加えて、我々はまた、式の中で、新たな(タイプ)を使用することができます。言い換えれば、新しい機能と同様の糖衣構文ではなく、新たな基礎概念です。
双方向に従う、同等であると言うことができます
// 使用 new
func newInt() *int {
return new(int)
}
// 使用传统的方式
func newInt() *int {
var dummy int
return &dummy
}
コンパイラはエラーをスローします、関係なく、上記の方法の、変数/定数は、一度だけ宣言することができ、繰り返し宣言しました。
しかし、特定の変数になる例外がある:匿名の変数にもプレースホルダ、または空白の識別子として知られ、強調しました。
匿名変数、3つの利点があります。
- メモリ空間を占有していない、メモリを割り当てません
- 名前と変数無用もつれに名前を付ける必要はありません。
- 繰り返しの文は何の問題もありません
通常、私たちは、匿名の受信を受け入れなければならないが、それは使用される値ではありません。
func GetData() (int, int) {
return 100, 200
}
func main(){
a, _ := GetData()
_, b := GetData()
fmt.Println(a, b)
}