LoginSignup
1
1

More than 5 years have passed since last update.

タダです。

ドットインストールのGo文法を学んでいるのでそこで学んだことを記録していきます。

ポインタ

変数宣言を行うと、メモリ上に領域(アドレス)を確保する
アドレスを指し示すのがポインタである
演算はできないが、ちゃんと利用できるとメモリの節約ができる

package main

import "fmt"

func main() {
    a := 5
    var pa *int
    pa = &a // &a = aのアドレス
    fmt.Println(*pa)
}

関数

関数(1)

関数とは、複数の処理をまとめたもの
関数は呼び出したい位置で宣言する

package main 

import "fmt"

func hi() {
    fmt.Println("Hello")
}

func main() {
    hi()
}

関数の引数は、変数と型を設定する

// 変数 型を引数にする
func hi(name string) {
    fmt.Println("Hello!" + name)
}

func main() {
    hi("tada")
}

返り値の型を、関数で宣言する必要がある

func hi(name string) string {
    msg := "Hello!" + name
    return msg
}

func main() {
    fmt.Println(hi("tada"))
}

これは短縮可能

func hi(name string) (msg string) {
    msg = "Hello!" + name
    return
}

func main() {
    fmt.Println(hi("tada"))
}

関数(2)

Goでは、返り値を複数持つことが可能

package main

import "fmt"

func swap(a, b int) (int, int) {
    return b,a
}

func main() {
    fmt.Println(swap(6, 7))
}

また、関数はデータ型なので変数の代入も可能

package main

import "fmt"

func main () {
    f := func(a, b int) (int, int) {
        return a, b
    }

    fmt.Println(f(3,2))
}

即時関数のように、関数をすぐに呼び出すこともできる

package main

import "fmt"

func main () {

    func(msg string){
        fmt.Println(msg)
    }("tada")

}

配列

複数のデータを扱う配列は以下のように利用する

package main

import "fmt"

func main () {
    // 初期化
    var a [5]int // a[0] ~ a[4]の扱いになる
    a[2] = 3
    a[4] = 5
    fmt.Println(a[2])
    // まとめて複数の値を宣言する場合
    b := [...]int{1,3,5}

    fmt.Println(b)
    // 要素数の確認 len(n)
    fmt.Println(len(b))
}
1
1
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
1
1