- 投稿日:2021-01-12T22:54:01+09:00
A Tour of Goの学習まとめ
サイト
Packages
Goのプログラムはパッケージで構成する。
package main
はmainパッケージから実行される
パッケージ名はimportパスの最後の要素名とするimport
他のプログラムやライブラリをimportする
Exported names
Goでは、最初の文字が大文字で始まる名前は、外部のパッケージから参照できるエクスポート(公開)された名前となる。小文字で始まる名前は、外部のパッケージから参照できない。
exportnames.gopackage main import ( "fmt" "math" ) func main() { fmt.Println(math.pi) // 参照できない fmt.Println(math.Pi) // 参照できる }Functions
構文
関数は、0個以上の引数を取ることができる。
型は引数名の後ろに、戻り値の型は引数の後ろに書く。func 関数名(引数1 引数1の型, ・・・) 戻り値の型 { 処理 }function.gofunc add(x int, y int) int { return x + y }引数
2つ以上の引数が同じ型である場合には、最後の型を残して省略できる。
function.gofunc add(x, y int) int { return x + y }戻り値
関数は複数の戻り値を返すことができる。
multiresult1.gopackage main import "fmt" func swap(x, y string) (string, string) { // 戻り値の型を()内で定義 return y, x } func main() { a, b := swap("hello", "world") fmt.Println(a, b) }Named return values
戻り値となる変数に名前をつけることができる。
戻り値に名前をつけると、関数の最初で定義した変数名として扱われる。
名前をつけた戻り値の変数を使うと、 return ステートメントに何も書かずに戻すことができる。multiresult2.gopackage main import "fmt" func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x return } func main() { fmt.Println(split(17)) }Variables
構文
varステートメントで変数を宣言する。最後の変数の後ろに型を宣言する。
変数には初期値を定義できる。var1.gopackage main import "fmt" var c, python, java bool var k, j int = 1, 2 func main() { var i int fmt.Println(i, c, python, java) fmt.Println(k,j) }省略方式
関数の中では、var宣言の代わりに短い
:=
の代入文を使い、暗黙的な型宣言ができる。
関数の外では、キーワードではじまる宣言( var, func, など)が必要で、:=
での暗黙的な宣言は利用できない。
in
```var2.go
package mainimport "fmt"
// 関数の外ではvarが省略できない
//n := 10func main() {
var i, j int = 1, 2
k := 3
c, python, java := true, false, "no!"fmt.Println(i, j, k, c, python, java)}
```型定義
組み込みの型
- bool 真偽値(true/false) 初期値false
- string 文字型 初期値""
- int 数値型 初期値0
- float32 浮動数値型 初期値0
型変換
Goでの型変換は明示的な変換が必要。
typeconversion.gopackage main import ( "fmt" "math" ) func main() { var x, y int = 3, 4 var f float64 = math.Sqrt(float64(x*x + y*y)) var z uint = uint(f) fmt.Println(x, y, z) }型推測
明示的な型を指定せずに変数を宣言する場合(
:=
やvar =
のいずれか)、変数の型は右側の変数から型推論される。
右側の変数が型を持っている場合、左側の新しい変数は同じ型になる。
右側に型を指定しない数値である場合、左側の新しい変数は右側の定数の精度に基いて int, float64, complex128 の型となる。inference.gopackage main import "fmt" func main() { i := 42 fmt.Printf("i is of type %T\n", i) f := 3.14 fmt.Printf("f is of type %T\n", f) c := 0.867 + 0.5i fmt.Printf("c is of type %T\n", c) }定数
定数は、constキーワードを使って変数と同じように宣言する。
定数は、文字(character)、文字列(string)、boolean、数値(numeric)のみで使える。
定数は:=
を使って宣言できない。const.gopackage main import "fmt" const Pi = 3.14 func main() { const World = "世界" fmt.Println("Hello", World) fmt.Println("Happy", Pi, "Day") const Truth = true fmt.Println("Go rules?", Truth) }
- 投稿日:2021-01-12T17:26:39+09:00
Golang入門2
localhostでHello world!
パスごとに表示を設定する。