20210112のGoに関する記事は3件です。

A Tour of Goの学習まとめ

サイト

Packages

Goのプログラムはパッケージで構成する。
package mainはmainパッケージから実行される
パッケージ名はimportパスの最後の要素名とする

import

他のプログラムやライブラリをimportする

Exported names

Goでは、最初の文字が大文字で始まる名前は、外部のパッケージから参照できるエクスポート(公開)された名前となる。小文字で始まる名前は、外部のパッケージから参照できない。

exportnames.go
package main

import (
    "fmt"
    "math"
)

func main() {
    fmt.Println(math.pi) // 参照できない
    fmt.Println(math.Pi) // 参照できる
}

Functions

構文

関数は、0個以上の引数を取ることができる。
型は引数名の後ろに、戻り値の型は引数の後ろに書く。

func 関数名(引数1 引数1の型, ・・・) 戻り値の型 {
    処理
}
function.go
func add(x int, y int) int {
    return x + y
}

引数

2つ以上の引数が同じ型である場合には、最後の型を残して省略できる。

function.go
func add(x, y int) int {
    return x + y
}

戻り値

関数は複数の戻り値を返すことができる。

multiresult1.go
package 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.go
package 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.go
package 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 main

import "fmt"

// 関数の外ではvarが省略できない
//n := 10

func 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.go
package 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.go
package 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.go
package 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)
}
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Golang入門3

Golangでhtmlを表示する。

本文はこちら

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Golang入門2

localhostでHello world!
パスごとに表示を設定する。

本文はこちら

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む