タダです。
ドットインストールの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))
}