m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

go言語の学習メモ

基本

packageはmainから
package main

import fmt "fmt"

func main(){
    fmt.Print("Hello World.")
}

基本のメインプログラムはpackage mainから

インデントはTab

go言語ではインデントをタブで管理しているよう
エディタでは適当に2〜4にしておけばいいのかな

末尾にセミコロンは不要

javascriptphpなどでは末尾にセミコロンが必要でしたけどgo言語には不要のようです

コメントは // か /* */

これはjavascriptphpなどと同じ用に// で行末、/* */で範囲をコメント化するようです

変数

方法1:変数を定義する場合には「:a」のように変数の前にコロンを定義する必要がありそうです
package main

import fmt "fmt"

func main(){
    // 変数aに10を代入
    a := 10
    fmt.Print(a, "\n")

    // 変数aを上書き
    a = 100
    fmt.Print(a, "\n")

    // 変数bに"hoge"を代入
    b := "hoge";
    fmt.Print(b, "\n")

}

っていうかこの方法は型推論と言われているもののようです(´・ω・`)

方法2:varで指定した場合は型を定義できるので明確なデータ型をわかりやすくするためにはこちらのほうがいいかも
package main

import fmt "fmt"

func main(){

    var (
        a int
        b string
    )

    // 変数aに10を代入
    a = 10
    fmt.Print(a, "\n")

    // 変数aを上書き
    a = 100
    fmt.Print(a, "\n")

    // 変数bに"hoge"を代入
    b = "hoge";
    fmt.Print(b, "\n")

}

使い捨ての変数などはその場だけにすればいいけど意味がある変数などは定義したほうがいいはず

定数

constを使用する
package main

import fmt "fmt"

func main(){

    const (
        HOGE = "hoge"
    )

    // 変数bに"hoge"を代入
    b := HOGE;
    fmt.Print(b, "\n")

    // 以下はエラー
    //HOGE = "aaa"

}

関数

funcで引数と返り値を定義
package main

import fmt "fmt"

func main(){

	var (
		a int
		b int
		c int
		s string
	)

	// add関数を呼び出して結果を取得
	a = 10
	b = 20
	c = add(a, b)

	fmt.Printf("%d + %d = %d \n", a, b, c)

	s = "Foo"
	echo(s)
	echo2()

}

/**
 * 関数add
 */
func add(a int, b int) int{
	return a + b
}

/**
 * 関数echo
 * 返り値なしの場合はreturn文にパラメータを設定しない
 */
func echo(s string) {
	fmt.Println(s);
	return
}

/**
 * 引数、返り値なし
 */
func echo2(){
	fmt.Println("Foo2")
	return
}

※返り値が存在しない場合でもreturn文を記載することは必要

とりあえず、今回はここまで
いろいろ試していきながら理解していく

所感

聞いたこと自体はあったけど実際に触ったことはないのでいろいろ新鮮味がある。
今はvimで書いてるけど、コード量が多くなったらIDEに依存してしまうかも…
クラスとかがないから実際どういうコードになるかがちょっと疑問だけど引き続きいろいろ見てみよう。

定義していても使用していない変数などがあったらエラーになるようなのはちょっと驚いた。