分1234os,ioパッケージ次に,ファイルへの書き込みと読み出しを行い,先ほどのJSONをファイルに保存するようにしましょう。ファイルの作成や取得はosパッケージ,書き込みや読み出しはioパッケージを用いて行います。ファイルの生成まずosパッケージを用いてファイルを作成してみましょう。os.Create()関数にファイル名を渡すと,*os.File構造体へのポインタが取得できます。このとき第二戻り値にエラーが返るため最初にエラー処理をします。file.Close()}*os.Fileは,io.ReadWriteCloserというインタフェース型であり,これは,Read(),Write(),Close()の3つのメソッドを実装していることを意味します。開いたファイルは使い終わったら閉じる必要があるので,deferを用いてClose()をmain()の終わりで実行するようにします。ファイルへの書き込み続いてファイルにデータを書き込んでみましょう。先ほど取得した*os.Fileは,io.Writerインタフェースを実装していました。これは次のように定義されています。error)}[]byteを引数として渡すと,その中身を対象に書き込み,戻り値として書き込んだバイト数とエラーを返します。worldを書き込むには次のようにします。}}ここでは,Write()の第一戻り値である書き込まれたバイト数は無視していますが,第二戻り値であるエラーは受け取ってエラー処理をしています。実行し,生成されたファイルに文字列が書き込まれていれば成功です。worldまた,WriteString()を用いると,毎回[]byteに変換する必要がなくなります。world\n")書き込む対象のio.WriterがWriteString()のようなメソッドを実装していない場合は,fmt.Fprint()を用いると,[]byteを経由せずio.Writerに対して文字列を直接書き込むことができます。world\n")このようにデータを書き込む方法はいくつかありますが,いずれも対象がio.Writerインタフェース型であることを利用している点を意識するとよいでしょう。ファイルからの読み出し次に書き込んだデータを読み出してみます。あるファイルを開く場合はos.Open()を用います。file.Close()}ファイルの読み出しにはio.Readerインタフェースを用います。error)}Read()は,読み出したデータを格納するのに十分な長さを持ったスライスを渡すと,そこにデータが格納されます。world\nという12byteのデータを読み出すため,長さが12のbyteのスライスを用意し,そこにデータを読み出します。戻り値として読み出したバイト数とエラーを返します(ここでは,戻り値のバイト数のほうは無視します⁠)⁠。Closerインタフェースを用いた最も基本的なファイル操作です。これはファイル操作以外に,ネットワークへのI/O処理でも同様に役に立つ知識です。JSONのEncoder/Decoder経由の保存ここまでの2つを組み合わせると,JSONをファイルに保存するには,JSONとファイルの間でデータを[]byteでやりとりすればよいことは容易に想像できるでしょう。JSONにはEncoder/Decoderというio.ReadeWriterを扱うAPIも用意されているため,同じくio.ReadWriterであるファイルを扱うにはこちらを用いることができます。json.Encoderを用いてJSONにデータを変換しつつ,io.Write()経由でファイルに書き込んでみましょう。}}JSONへの変換結果を[]byteとして受け取ることなく,そのまま*os.Fileに書き込んでいることがわかると思います。同様に,json.Decoderを用いてファイル内のJSONデータを読み出し,Personにデコードしてみましょう。fmt.Println(person)}こちらも,ファイルから読み出した結果を[]byteとして受け取ることなく,そのままデコードしてPerson型の変数に格納しています。このように,標準ライブラリにはio.Reader,io.Writerを中心として設計されたAPIが多くあります。この点を意識してドキュメントを見ると,より適したAPIを選ぶことができます。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。