ホームページ バックエンド開発 Golang Golang を使用した最初のプロジェクト

Golang を使用した最初のプロジェクト

Sep 09, 2024 pm 08:31 PM

My First Project using Golang

?パート 1: Go を使用したファイル操作

? はじめに

JavaScript で長年の経験を持つフロントエンド開発者として、私は新たな挑戦をする時期が来たと判断しました。今年、私は Golang の世界に飛び込むことにしました。自分のスキルをテストし、実用的なツールを自分の武器庫に追加するために、私はファイル オーガナイザーを作成しました。ファイル オーガナイザーは、混乱したファイル管理に秩序をもたらすように設計されたコマンド ライン ツールです。 ?

大規模なプロジェクトを終えたばかりで、ディレクトリが画像、音声ファイル、ビデオ、ドキュメントで混沌とした状態になっていると想像してください。それは、美しく装飾された家があるのに、すべての家具が無造作に捨てられているようなものです。 ?行ったことあるけど全然面白くなかった!

冒険の最初の部分では、Go でのファイル操作の基本に焦点を当て、拡張子に基づいてファイルを適切なフォルダーに分類して整理する方法を学びます。飛び込む準備はできていますか?行きましょう!

?️‍♂️ チャレンジ

乱雑なディレクトリに圧倒されたと感じたことはありますか?画像ファイル、オーディオ クリップ、ビデオ、ドキュメントがすべて混在しています。手作業でそれらを分類するのは、干し草の山から針を探すような気分になるかもしれません。 ?

? 私たちの英雄的な解決策

私たちはこの混乱を組織化された楽園に変えるツールを構築するつもりです!ファイル オーガナイザーは、ファイルを種類に基づいて自動的にフォルダーに分類します (画像はこちら、音声はこちら、ビデオはこちら、ドキュメントはきちんと収納)。 ?

?️ 私たちがどのようにしてそれを実現したか

この驚異的なファイル並べ替えをどのようにして実現したかを次に示します:

1. ディレクトリパスの取得

私たちの旅は、ファイルがどこに隠れているかを見つけることから始まります:

dir := os.Args[1]
ログイン後にコピー

この行は、プログラムに「ファイルがいっぱいのディレクトリはどこですか?」と尋ねるようなものです。 ?

2. ディレクトリの読み取り

次に、そのディレクトリ内を覗いて、そこに何が入っているかを確認する必要があります:

files, err := os.ReadDir(dir)
var filesToOrder []string

if err != nil {
    log.Fatal(err)
}
ログイン後にコピー

ディレクトリの内容を読み取り、ディレクトリが存在しないなど、何か問題が発生した場合は、プログラムが停止して通知します。 ?

3. ディレクトリをスキップする

ここで、ディレクトリはそのままにして、ファイルに焦点を当てる必要があります。

for _, file := range files {
    if file.IsDir() {
        continue
    }
    filesToOrder = append(filesToOrder, file.Name())
}
ログイン後にコピー

ここでは、各項目をループします。ディレクトリの場合はスキップします。ファイルの場合は、整理するファイルのリストに追加します。 ?️

4. ファイルの並べ替え

ファイルのリストが準備できたら、ファイルを新しいホームに分類します。

for _, fileName := range filesToOrder {
    fileType := determineType(fileName)

    switch fileType {
    case IMAGE_TYPE:
        _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "images"))
    case AUDIO_TYPE:
        _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "audio"))
    case VIDEO_TYPE:
        _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "videos"))
    case DOCUMENT_TYPE:
        _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "documents"))
    default:
        fmt.Printf("Unsupported file type: %s\n", fileName)
    }
}
ログイン後にコピー

各ファイルをループして、そのタイプを判断し、適切なフォルダーに送信します。認識できないファイルの種類が見つかった場合は、お知らせします。 ?

5. ファイルタイプの決定

どのような種類のファイルを扱っているかを確認するには、次の便利な関数を使用します。

func determineType(file string) int {
    for key, value := range ALLOWED_TYPES {
        for _, ext := range value {
            if strings.HasSuffix(file, ext) {
                return key
            }
        }
    }
    return UNDEFINED_TYPE
}
ログイン後にコピー

ファイルの拡張子をリストと照合して、それが画像、音声、ビデオ、ドキュメントのいずれであるかを示します。 ?️‍♂️

6. ファイルを新しいホームに移動する

最後に、各ファイルを新しいフォルダーに移動します。

func moveToFolder(src, dest string) error {
    if _, err := os.Stat(dest); os.IsNotExist(err) {
        err := os.Mkdir(dest, 0777)
        if err != nil {
            return err
        }
    }

    fileName := filepath.Base(src)

    err := os.Rename(src, filepath.Join(dest, fileName))

    if err != nil {
        return err
    }

    return nil
}
ログイン後にコピー

宛先フォルダーが存在するかどうかを確認し、必要に応じて作成します。次に、ファイルを古い場所から新しい場所に移動します。 ?

7. サポートされていないファイル形式の処理

どのカテゴリにも当てはまらないファイルについては、次のように通知されます。

default:
    fmt.Printf("Unsupported file type: %s\n", fileName)
ログイン後にコピー

サポートされていないファイル タイプについてはメッセージが出力されるため、何が整理されていないのかが正確にわかります。 ?


これでパート 1 は終わりです! ? Go でのファイル操作の基本にうまく取り組み、ファイルを適切なカテゴリに分類することができました。しかし、ここで考えてみましょう。「アーカイブ」や「プロジェクト」などの新しいカテゴリを追加したい場合はどうすればよいでしょうか?現時点では、マップに飛び込んでコードを微調整する必要があります。 ?

このツールを使用しているのがあなただけである場合、このアプローチは最適です。しかし、この素晴らしいツールを Go を知らない友人と共有することを想像してみてください。 ?️ コードを理解する必要がなく、誰でも簡単にカスタマイズできるようにしたいと考えています。

恐れる必要はありません。次のパートでは、ファイル オーガナイザー ツールをさらに深く掘り下げ、これらの課題に対処する高度な機能を明らかにします。 ? Go コードを 1 行も記述することなく、誰でもツールを微調整したり強化したりできるようにします。興味をそそられましたか?乞うご期待!

ご質問や詳細が必要ですか?以下にドロップしてチャットしましょう! ?



以上がGolang を使用した最初のプロジェクトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golang and C:Concurrency vs. Raw Speed Golang and C:Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

ゴーを始めましょう:初心者のガイド ゴーを始めましょう:初心者のガイド Apr 26, 2025 am 12:21 AM

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

Golang vs. C:パフォーマンスと速度の比較 Golang vs. C:パフォーマンスと速度の比較 Apr 21, 2025 am 12:13 AM

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

Golang vs. Python:重要な違​​いと類似点 Golang vs. Python:重要な違​​いと類似点 Apr 17, 2025 am 12:15 AM

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとC:パフォーマンスのトレードオフ GolangとC:パフォーマンスのトレードオフ Apr 17, 2025 am 12:18 AM

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

パフォーマンスレース:ゴラン対c パフォーマンスレース:ゴラン対c Apr 16, 2025 am 12:07 AM

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golang vs. Python:長所と短所 Golang vs. Python:長所と短所 Apr 21, 2025 am 12:17 AM

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase

See all articles