LoginSignup
0
0

More than 3 years have passed since last update.

A Tour of Go メモ【1】1日目

Posted at

goのチュートリアル

A Tour of GO
時折、コードをいじって、どんなエラーが出るかなどを試しながら、学習しました。

出力

packages.go
package main

# パッケージをインポート
import (
  # 出力のためのパッケージ
    "fmt"
)

func main() {
    # 出力
    fmt.Println("Hello World"))
}

パッケージのインポート

packages.go
package main

#複数行で書くこともできる
import "fmt"
import "math"

#こっちの方がスマート
import (
 "fmt"
 "math"
)

関数と引数

function.go
package main

import "fmt"

#変数の後ろに型名を指定する必要がある
func add(x int, y int) int {
    return x + y
}

func main() {
    fmt.Pringln(add(20, 30))
}

// 50


#関数の引数が同じ型なら省略可能

func add(x, y int) int {
  return x + y

}

複数の戻り値

func swap(x, y string) (string, string) {
    return y, x
}

func main() {
  a, b := swap("hello", "world")
  fmt.Println(a,b)
}

// "world" "hello"




# Namec return values

* 以下は戻り値の変数が定義されないので、エラーになる
func split(sum int) (int, int) {
    a = sum / 2
    b = sum / 3
    return a, b
}


* 戻り値の変数に名前をつける必要がある
func split2(sum int) (a, b int) {
    a = sum / 2
    b = sum / 3
    return a, b
}

変数

var n int
var c


func main () {
  fmt.Println(n)
  fmt.Println(c)
}

# int を指定し、何も値を指定しないと初期値は0
// 0
# 型を指定しなかった c はエラーになる
// syntax error: unexpected newline, expecting type

 変数の初期値

var i, j int = 1, 2
# 初期値を同時に指定すると、型を宣言しなくて良い
var a, b = 10, 11
var c, python, java = true, false, "no"

func main() {
    fmt.Println(i, j)
    fmt.Println(a, b)
    fmt.Println(c, python, java)
}

// 1 2
// 10 11
// true false no

変数の定義と代入

func main() {
    a := "hello"
    k := 3
    fmt.Println(a)
    fmt.Println(k)
}

// hello
// 3



# func main()の外で := を使って、代入するとエラー

# ok
var a strint = "hello"
# ng
b := "hello"

func main() {
    fmt.Println(a)
    fmt.Println(b)
}
# a は OK
// hello
# b はエラーになる
// syntax error: non-declaration statement outside function body

各変数の初期値

func main() {
    var i int
    // 0
    var f float64
    // 0
    var b bool
    // false
    var s string
    // ""
    ...
}

型の変換

var i int = 32
var f float64 = float64(i)
var u uint = uint(f)

i := 32
f := float64(i)
u := uint(f)

型の確認


func main() {
    v := 100
    fmt.Printf("%T\n", v)
    s := "hello"
    fmt.Printf("%T\n", s)
}
// v
> int
// s
> string

定数の宣言

func main() {
    const Say = "hello"
    fmt.Println(Say)

   #再代入できない
    Say = "Hey"
    // cannot assign to Say
}
> "hello"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0