Golangでファイルやディレクトリのパーミッションを取得しようとした際、オブジェクトとして取得できてしまうのでどうやったら0644,0700といった形式で取得すればいいのかな?と少し手こずったので、備忘として残しておく。 以下のように、printfで"%04o"でパーミッションを数字として出力することができるようだ。

package main

import (
    "fmt"
    "os"
)

func main() {
    file := "file.txt"
    info, _ := os.Stat(file)
    mode := info.Mode()

    // オブジェクトなので、"0600"のような形式で取得したい場合はこのようにする
    fmt.Printf("%04o\n", mode) // オブジェクトなので、"0600"のような形式で取得したい場合はこのようにする
}