エンジニアもどきの雑記

メモ帳です。きっと。macアプリ配信windowsでもできるようになるまで絶対にメイン機にしないマン。特筆しない限り環境は【win10home,i5-7200u,8g,64bit,巨乳が好き】

Go構造体さわる

構造体さわる
巨乳をそっと下から支えたい

package main

import "fmt"

type Owl struct {
        Name string
        Age  int
        Meal string
}

func (o *Owl) Birthday() {
        o.Age++
}

func main() {
        owl := Owl{
                Name: "lulu",
                Age:  5,
                Meal: "Meat",
        }

        fmt.Println(owl.Age)

        owl.Birthday()

        fmt.Println(owl.Age)
}

//結果
5
6


昨日さらっとやったメソッドとか、構造体とか。
改めて確認する。

Owlって構造体を用意。
初期化してうちのルルちゃんの情報で初期化してやる。
そして、
owl.Birthday()
でメソッドを利用して構造体にアクセスして歳をとらせた。
なのでowl.Birthday()の前後で数字が違う。

ここで確認したいのがメソッドのレシーバ。

*ポインタで指定してるのは、そうしないと値にアクセスできないから。
試しに*を削除してやってみる。
と結果は

5
5


これは先ほどの通り、値にアクセスできてないから。
参照しないといけないんですねぇ。

cとかやってた人とかそこらへんしっかりわかってる人は大丈夫なんだろうけど、私みたいなぺーぺーは最初ここら辺大変だった。
必死にパソコンの仕組み系の本読んで覚えた。

未経験からほぼ独学で飛び込んで三年。
やっとポインタがわかり始める。
スクリプト言語ばっかりやってると参照渡しくらいしか使わなかった。

entityとかにおいておく感じなのかなー。
もっと書こう。

ちなみに構造体なので以下にもできる

 owl := new(Owl)
 owl.Name = "lulu"
 owl.Age = 5
 owl.Meal = "Meat"



newと先の初期化どう違うんだ?
って調べてみたら初期化できるかできないかっぽい

個人的には最初に書いた方がわかりやすいなー
昨日の記事は後者だけど。

明日もう少し踏み込んで書こうかな。
今日はやることあるしここまで