0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Go学習記録6日目 同期的なチャットアプリ①

Posted at

Go言語学習の6日目です。

今回は並列処理の勉強のために、チャットアプリを作成しました。

ポインタを引数とする関数

// 値を変更する関数
func modifyValue(p *int) {
    *p = 20 // ポインタを使って、元の変数の値を変更
}

func main() {
    a := 10
    fmt.Println("Before:", a) // 出力: Before: 10
    modifyValue(&a)           // aのアドレスを渡す
    fmt.Println("After:", a)  // 出力: After: 20
}

状右記のようなコードを例として、modifyValueの引数のpの型の役割をきちんと理解しました。modifyValueは*int型のポインタを引数にしています。ポインタを引数として使用することで、関数内で変数の値を直接操作することができ、効率的なメモリ使用とデータの可変性を実現できる。
*の使いどころとして、(1)変数に付けてポインタを表現する,(2)intやstringなどの型に付けて型のポインタを表現する。
この二つが混在していましたが、今日で上手く整理出来ました。

構造体のエクスポート

type Person struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}

上記のようなPerson構造体があったとき、フィールド名が大文字か小文字かで挙動が変わります。大文字の時はエクスポートされたフィールドで、小文字の時はエクスポートされていないフィールドです。エクスポートされたフィールドはパッケージ外からアクセスすることが出来ます。JSON操作を行うとき`encoding/json'パッケージを使いましたが、これはパッケージ外からのアクセスです。Person構造体のフィールドを大文字で始めないといけません(自分はこれで詰まりました)

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?