kurumi-bioの雑記帳

プログラミング、パソコン、ペット、 犬、お出かけ

初心者のGo言語 -15- <Chtimes,Clearenv,Environ>

こんにちは、kurumi-bioです。久々のGo言語の学習です。
第2回目のosパッケージ(標準ライブラリー)の学習です。

環境

OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.19.4 windows/amd64

Chtimes関数

func Chtimes(name string, atime time.Time, mtime time.Time) error

Chtimes は、Unix の utime() または utimes() 関数と同様に、指定されたファイルのアクセス時刻と変更時刻を変更します。基礎となるファイルシステムは、値を切り捨てたり、精度の低い時間単位に丸めたりする場合があります。エラーがある場合、タイプは *PathError になります。

<サンプルコード>ChtimesSample.go

package main

import (
    "fmt"
    "os"
    "time"
)

func main() {
    a := time.Date(2023, time.March, 2, 4, 5, 6, 0, time.UTC)
    m := time.Date(2023, time.February, 1, 3, 4, 5, 0, time.UTC)
    e := os.Chtimes("Chtimes.txt", a, m)
    if e != nil {
        fmt.Fprintf(os.Stderr, "os.Chtimes Error: %v \n", e)
    } else {
        fmt.Printf("os.Chtimes success\n")
    }
}

<実行結果>

time.Dateは、引数に西暦、月、日、時、分、秒、ミリ秒を指定してtime変数を作成しています。 ですので、Chtimes.txtのアクセス時刻2023年3月2日 4時5分6秒に、変更時刻2023年2月1日 3時4分5秒に変更するプログラムです。
実行後にファイルのプロパティを見ると、更新日時2023年2月1日 12時4分5秒で、アクセス日時2023年3月2日 13時5分6秒になっています。 これは、os.ChtimesのロケーションにUTC(協定世界時)を指定していますが、表示は日本標準時 (JST)になっているため、+9時間になっているためです。

Clearenv関数

func Clearenv()

Clearenv はすべての環境変数を削除します。

<サンプルコード>ClearenvSample.go

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Printf("OS=[%s]\n", os.Getenv("OS"))
    os.Clearenv()
    fmt.Printf("OS=[%s]\n", os.Getenv("OS"))
}

<実行結果>

os.Getenv関数で、環境変数OSの値を出力後にos.Clearenv()関数を使って環境変数を削除。そのため2回目の環境変数OSの値は空になっています。 プログラム実行後にDosコマンドで環境変数OSの値を出力していますので、プログラム内だけ環境変数が削除されていることになります。

Environ関数

func Environ() []string

Environ は、環境を表す文字列のコピーを "key=value" の形式で返します。

<サンプルコード>EnvironSample.go

package main

import (
    "fmt"
    "os"
)

func main() {
    env := os.Environ()
    for _, s := range env {
        fmt.Printf("%s\n", s)
    }
}

<実行結果>

長かったので途中でカットしましたが、全ての環境変数が出力できました。

最後までご覧いただきありがとうございます