PUROGU LADESU

ポエムがメインのブログです。

【Golang】2 基本とデータ型

基本

main.goから始まる
fmt.Println()で出力
init() 関数は強制的に最初に実行される。
packageとはコードの集まり。ライブラリもほぼ同じ意味。クラスはない。
ディレクトリ名がpackage名となる。その中にgoファイルを配置。
app
L main.go
L package1
 L file1.go
 L file2.go
L package2

import

標準パッケージ一覧
Packages - The Go Programming Language
packageはimportして使う

変数

var i    int = 3
var (
	i    int = 3
	f64  float64
	s    string
	t, f bool = true, false
)

var を () でくくればvarを毎回先頭に付ける必要はない
初期値を代入しなかった場合デフォルト値となる。0、空文字、falseなど

xi := 1
xs := "ccc"

const

const Pi = 3.14
書き換えられない
型がない(untype)(実行するまで解釈されない)
通常はグローバルに書く
通常は先頭は大文字

文字列

インデックス指定でアスキーコード取得、stringで文字に変換

string("Hello"[0])

文字の置き換え

var s string = "Namaste"
s = strings.Replace(s, "N", "Z", -1)
strings.Contains(s, "mas")

バッククオートでヒアドキュメント ``

論理値

変わったところはない
&& || !

型変換

int float64
文字 -> 数字はpythonみたいにstringではできない

i, _ := strconv.Atoi("14") //数値へ

戻り値をアンダースコア(_)で受け取れば、未使用でもコンパイルできる

配列

型部分で宣言したサイズは変更できません

var b [2]int = [2]int{30, 40}

スライス

サイズ変更できる配列

var b []int = []int{30, 40}
b = append(b, 50) //追加

var n int 初期化しないとnilになる
n := make(
int, 0) だと中身は空だがメモリ上に存在する

map

m := map[string]int{"apple": 100, "banana": 300}

新しいキーに代入すると追加される

var m map[string]int 

初期化しないとnil mapになり、追加できない

m := make(map[string]int) 

nilじゃない

a, ok := m["grape"]

keyが存在しないと0を返し、2つ目の返り値にfalseが返る

バイト

b := []byte{72,73}

stringで文字列にキャストできる

c := []byte("HI")

文字列を渡すとアスキーコードに変換される

アスキーコード変換表
ASCII Code - The extended ASCII table