こんにちは、kurumi-bioです。
第7回目のosパッケージ(標準ライブラリー)の学習です。
環境
- Windows
OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.20 windows/amd64 - Linux
OSバージョン:openSUSE Leap 15.4
Go言語のバージョン:go version go1.20.1 linux/amd64
Link関数
func Link(oldname, newname string) error
[ソースコード]LinkSample.go
package main import ( "fmt" "os" ) func main() { e := os.Link("src.txt", "dest.txt") if e != nil { fmt.Fprintf(os.Stderr, "Error: %v \n", e) os.Exit(1) } }
src.txtのハードリンクのdest.txtを作成します。
[実行結果]
Windowsの実行結果です。
fsutil hardlink list ファイル名で指定したファイルのハードリンクの一覧が表示されます。LinkSample.goを実行する前はsrc.txtのハードリンクは自ファイルのみでしたが、LinkSample.goを実行した後は、dest.txtがハードリンク先として表示されています。
Linuxの実行結果です。
lsコマンドにiオプションを指定してi-nodeを表示しています。src.txtとdest.txtが同じi-node番号(13781)になっていますのでハードリンクになっていることがわかります。またパーミッションの後の数字がハードリンクの数を表しており、2に変わっていることからもハードリンクが作成されたことがわかります。
既にdest.txtが作成されている場合は Cannot create a file when that file already exists. のエラーが発生します。
src.txtが存在しない場合は The system cannot find the file specified. のエラーが発生します。
LookupEnv関数
func LookupEnv(key string) (string, bool)
[ソースコード]LookupEnvSample.go
package main import ( "fmt" "os" ) func main() { s, b := os.LookupEnv("CPU") if b == true { fmt.Printf("CPU=[%s]\n", s) } else { fmt.Println("Not Found.") } s, b = os.LookupEnv("LANGUAGE") if b == true { fmt.Printf("LANGUAGE=[%s]\n", s) } else { fmt.Println("Not Found.") } s, b = os.LookupEnv("NON") if b == true { fmt.Printf("NON=[%s]\n", s) } else { fmt.Println("Not Found.") } }
環境変数のCPU、LANGUAGE、NONを取得して表示します。環境変数が存在しなかった場合は"Not Found."と表示します。
[実行結果]
Linuxの実行結果です。
Windowsでは、値が空の環境変数を作れなかったため<Linuxで試しました。環境変数CPUの値は、x86_64で、環境変数LANGUAGEの値は空、環境変数NONは存在しませんでした。ブール値が戻ってくるので、環境変数が存在するが値が空という判断が可能になっています。
**最後までご覧いただきありがとうございます**