0
0

【Golang】配列の比較による新しい要素の抽出について

Posted at

Golanfで2つの配列を比較し、一方の配列に存在しない要素を新しい配列に抽出することを実装したため、備忘録として残すもの。
この方法は、データのフィルタリングやデータの整理など、さまざまな応用分野で役立ちます。

サンプルコード

package main

import (
	"fmt"
)

func main() {
	// 配列を定義します
	existArray := []int{1, 2, 3, 4, 5}
	array := []int{3, 4, 5, 6, 7}

	// 新しい要素のみを追加するための空のスライスとして初期化します
	var newArray []int

	// arrayの要素を順番にチェックし、existArrayに存在しない要素をnewArrayに追加します
	for _, element := range array {
		found := false
		for _, existElement := range existArray {
			if existElement == element {
				found = true
				break
			}
		}
		if !found {
			newArray = append(newArray, element)
		}
	}

	// 結果を表示します
	fmt.Println("existArray:", existArray) // existArray: [1 2 3 4 5]
	fmt.Println("array:", array) // array: [3 4 5 6 7]
	fmt.Println("newArray:", newArray) // newArray: [6 7]
}

配列の要素比較について

実際に比較している箇所について、詳しくコメントを追加したものが下記

// 最初にarrayを展開して、要素を一つ取り出す。
for _, element := range array {
        // array要素がexisstArrayの要素に含まれているかの制御文を追加
		found := false

        // existArrayを展開して、要素を一つずつ取り出す。
		for _, existElement := range existArray {
            // arrayとexistArrayの取り出した要素同士を比較する
            // 同じ要素があった場合は、制御文をtrueにしたループを抜ける
			if existElement == element {
				found = true
				break
			}
		}

        // existArrayとの比較が終了したループを抜けた際に、一致した要素がない場合に、下記処理が実行される。
		if !found {
			newArray = append(newArray, element)
		}
	}

found変数は特定の条件(ここでは element が配列existArray内で見つかったかどうか)を追跡し、 「条件が満たされた場合」「満たされなかった場合」の2つの状態を表現するのに役立つ。

まとめ

found変数(boolean)で状態を制御する方法について知ることができた。

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