Day: August 19, 2018

goで、無ければディレクトリを作成した上で、ディレクトリ内のファイルに追記と上書きをする

goで、無ければディレクトリを作成した上で、ディレクトリ内のファイルに追記と上書きをする 最初は動かすコードのみワークスペースにある状態。 中身は以下の通り。 check_dir ()で、無ければディレクトリを作成する。 make_line ()は、ファイルに書き込む情報を作成しているだけで、今回はタイムスタンプを書き込むこととする。 append_file()は、ファイルに追記をする関数で、対象ファイルはappend_file.txt。 overwrite_file()、ファイルに上書きをする関数で、対象ファイルoverwrite_file.txt。 os.OpenFile(<対象ファイル>, <オプション>) はファイルを操作する関数で、いくつかオプションが設定できる。 O_RDONLY、O_WRONLY、O_RDWRのどれかは必ず指定しなければならない。 O_RDONLY:読み取り専用 O_WRONLY:書き込み専用 O_RDWR:読み書き可能 O_APPEND:追記 O_CREATE:無ければファイル作成する O_EXCL:O_CREATEと共に使われ、ファイルはすでにある場合はエラー O_TRUNC:上書き O_EXCLを使って、すでにファイルがある場合は、以下のようなエラーが生成される。 詳細はこちら。 https://golang.org/src/os/file.go それでは、先ほどのコードを実行。 このようにディレクトリとファイルが作成される。 append_file()関数は追記をしているため、実行するたびにファイルの行が増えていく。 overwrite_file()は上書きのため、何度実行しても、最新の行のみが記載される。

goで、関数名は大文字で始まらなければ、外部パッケージの関数は呼び出せない

結構ハマったのでメモ。 goで、関数名は大文字で始まらなければ、外部パッケージの関数は呼び出せない。 例えば以下のような構造のファイルがあるとする。 main-package.go内で、sub-package.go内の関数を呼び出したい。 sub-packageの中身は以下の通り。 大文字で始まるHellohello()は呼び出せるが、小文字で始まるhellohello()は呼び出せないことを確認する。 まずは、大文字で始まるHellohello()をお呼び出し。 正常に実行できる。 次に、小文字で始まるhellohello()をお呼び出し。 参照できないと怒られる。。。 以上