BackEnd

Go 1.23のos.CopyFSについて

投稿日:

はじめに

Go 1.23で os パッケージに追加された CopyFS について紹介します。

os.CopyFSでディレクトリをコピーする

Go 1.22 以前は、ディレクトリをコピーする場合は再帰的に行うなどの工夫が必要でしたが、Go 1.23 で追加された os.CopyFS を使えば簡単にディレクトリをコピーすることができます。

コードサンプル

os.CopyFS の使い方は非常にシンプルなので、まずはサンプルコードを記載します。

実行前のディレクトリ構造は以下のとおりです。

実行後のディレクトリ構造は以下のとおりです。

このように、ディレクトリがネストしている場合でも正しくコピーすることができます。

os.CopyFS

os.CopyFS のシグネチャは以下のとおりです。

第一引数にはコピー先のディレクトリのパスを渡し、第二引数にはコピー対象を渡します。

os.CopyFS では、コピーする際に必要に応じてディレクトリが作成されます。

os.CopyFS でコピーされたファイルのpermissionはumaskの値を受けるため、元のファイルとは異なり、644になりました(ディレクトリの場合は755)。

もしコピー先に同じファイルがある場合は、コピー元のファイルで上書きされました(コピー先にしかないファイルはそのまま)。

コピー対象としてSymbolicはサポートされていないため、エラーが返ります。

さいごに

Go 1.23で os パッケージに追加された CopyFS について、サンプルコードと実際の挙動を交えて紹介しました。

おすすめ書籍

初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド Go言語 100Tips ありがちなミスを把握し、実装を最適化する impress top gearシリーズ 効率的なGo ―データ指向によるGoアプリケーションの性能最適化

blog-page_footer_336




blog-page_footer_336




-BackEnd
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

rails

Shrineを使って画像をアップロードする

1 はじめに2 Shrineとは2.1 簡単な説明2.2 作者2.3 特徴3 下準備3.1 Gemを追加3.2 初期設定3.3 テーブルを作成する4 実装4.1 Uploaderの実装4.2 Mode ...

rails

Rails5.2+Pumaのデプロイ設定

1 はじめに1.1 環境2 Pumaとは?2.1 Unicornとの比較2.2 Pumaのスレッド3 Pumaの使い方4 デプロイ設定4.1 Gemを追加4.2 Capfileの設定4.3 deplo ...

Laravelのchunkメソッドとcursorメソッドのメモリ使用量

1 はじめに2 テスト用のデータ準備3 get()4 chunk()5 chunkById()6 cursor()7 さいごに8 おすすめ書籍 はじめに テーブルの全レコードに一括で処理を行うバッチを ...

rails

半年ぶりにRails Tutorialをやったメモ

はじめに Railsを触り始めて半年ほどたちました、tonnyです。 復習もかねてRails Tutorialを実施したので、そのメモを残します。 やはり2回目でも気づくことは多いので、非常に勉強にな ...

MySQLでバルクアップデート処理

1 はじめに2 使用するテーブル3 パターン数が少ないシンプルな更新4 パターン数が多い場合4.1 FIELD関数4.2 ELT関数4.3 組み合わせ4.4 パフォーマンス5 さいごに6 おすすめ書籍 ...

フォロー

blog-page_side_responsive

2024年12月
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。