サーチ…
構文
- var x int //変数xをint型で宣言する
- var s string //変数sを型stringで宣言する
- x = 4 // xの値を定義する
- s = "foo" // sの値を定義する
- y:= 5 //型をintに推論して定義します
- f:= 4.5 // fの型をfloat64に推論するfを宣言して定義する
- b:= "bar" //その型を文字列に推論するbを宣言して定義する
基本変数宣言
Goは静的型付き言語です。つまり、使用する変数の型を宣言する必要があります。
// Basic variable declaration. Declares a variable of type specified on the right.
// The variable is initialized to the zero value of the respective type.
var x int
var s string
var p Person // Assuming type Person struct {}
// Assignment of a value to a variable
x = 3
// Short declaration using := infers the type
y := 4
u := int64(100) // declare variable of type int64 and init with 100
var u2 int64 = 100 // declare variable of type int64 and init with 100
複数の変数割り当て
Goでは、複数の変数を同時に宣言することができます。
// You can declare multiple variables of the same type in one line
var a, b, c string
var d, e string = "Hello", "world!"
// You can also use short declaration to assign multiple variables
x, y, z := 1, 2, 3
foo, bar := 4, "stack" // `foo` is type `int`, `bar` is type `string`
関数が複数の値を返す場合は、関数の戻り値に基づいて変数に値を代入することもできます。
func multipleReturn() (int, int) {
return 1, 2
}
x, y := multipleReturn() // x = 1, y = 2
func multipleReturn2() (a int, b int) {
a = 3
b = 4
return
}
w, z := multipleReturn2() // w = 3, z = 4
空白の識別子
あなたがより良いコードを書いてもらうために、未使用の変数がある場合、Goはエラーを投げます。しかし、変数に格納されている値を実際に使用する必要がない場合もあります。そのような場合、「空白の識別子」 _
を使用して、割り当てられた値を割り当てて破棄します。
空白の識別子には任意の型の値を割り当てることができ、複数の値を返す関数で最も一般的に使用されます。
複数の戻り値
func SumProduct(a, b int) (int, int) {
return a+b, a*b
}
func main() {
// I only want the sum, but not the product
sum, _ := SumProduct(1,2) // the product gets discarded
fmt.Println(sum) // prints 3
}
range
を使用range
func main() {
pets := []string{"dog", "cat", "fish"}
// Range returns both the current index and value
// but sometimes you may only want to use the value
for _, pet := range pets {
fmt.Println(pet)
}
}
変数の型のチェック
関数から返された変数の型がわからない場合があります。変数の型がわからない場合は、変数var.(type)
を使用して変数の型をいつでもチェックできます。
x := someFunction() // Some value of an unknown type is stored in x now
switch x := x.(type) {
case bool:
fmt.Printf("boolean %t\n", x) // x has type bool
case int:
fmt.Printf("integer %d\n", x) // x has type int
case string:
fmt.Printf("pointer to boolean %s\n", x) // x has type string
default:
fmt.Printf("unexpected type %T\n", x) // %T prints whatever type x is
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow