Menu
Coddy logo textTech

まとめ:カスタムデータ構造

CoddyのGOジャーニー「基礎」セクションの一部 — レッスン 101/109。

challenge icon

チャレンジ

簡単

Goの構造体について学んだことを復習するために、シンプルなカスタムデータ構造を作成しましょう。

このチャレンジでは、以下のことができる基本的な Counter データ構造を作成します:

  1. カウント値を追跡する
  2. カウントをインクリメント(増加)する
  3. カウントをデクリメント(減少)する
  4. カウントをゼロにリセットする

Counter 構造体の不足しているメソッドを実装して、コードを完成させてください。

自分で試してみよう

package main

import (
	"fmt"
)

// Counter はシンプルなカウンターのデータ構造です
type Counter struct {
	value int
	name  string
}

// NewCounter は指定された名前で新しいカウンターを作成します
func NewCounter(name string) Counter {
	return Counter{
		value: 0,
		name:  name,
	}
}

// Increment はカウンターを 1 増やします
func (c *Counter) Increment() {
	// カウンターの値を増やすコードを追加してください
}

// Decrement はカウンターを 1 減らします(ただし 0 未満にはなりません)
func (c *Counter) Decrement() {
	// カウンターの値を減らすコードを追加してください
	// 値が 0 未満にならないようにしてください
}

// Reset はカウンターを 0 に戻します
func (c *Counter) Reset() {
	// カウンターを 0 にリセットするコードを追加してください
}

// Value は現在のカウントを返します
func (c Counter) Value() int {
	// 現在の値を返すコードを追加してください
	return 0 // これを置き換えてください
}

// String はカウンターの文字列表現を返します
func (c Counter) String() string {
	return fmt.Sprintf("%s: %d", c.name, c.value)
}

func main() {
	// "Visitors" という名前の新しいカウンターを作成します
	visitors := NewCounter("Visitors")
	
	// カウンターを数回増やします
	visitors.Increment()
	visitors.Increment()
	visitors.Increment()
	
	// 現在のカウントを表示します
	fmt.Println(visitors)
	fmt.Println("Current value:", visitors.Value())
	
	// カウンターを減らします
	visitors.Decrement()
	fmt.Println(visitors)
	
	// カウンターをリセットします
	visitors.Reset()
	fmt.Println(visitors)
	
	// カウンターが 0 未満にならないことをテストします
	visitors.Decrement()
	fmt.Println(visitors)
}

基礎のすべてのレッスン