为什么使用Golang设置的文件权限与预期的不同?

func stringToInt(s string) int {
    i, err := strconv.Atoi(s)
    check(err)
    return i
}

os.FileMode(stringToInt("0777"))

when no conversion to int is required (leading zero is not removed) by setting the permission directly:

os.FileMode(0777)

the file permissions are correct

Current outcome

777
777
-r----x--x
753
753
--wxrw---x
500
500
-rwxrw-r--

Expected outcome

777
-rwxrwxrwx
753
-r-xr-x-wx
500
-r-x------

Based on the comments of @AdamSmith and @JamesHenstridge the following solves the issue:

mode, _ := strconv.ParseInt(fileAttributes["mode"], 8, 32)

0777
511
-rwxrwxrwx
0753
491
-r-xr-x-wx
0500
320
-r-x------

However when the leading zeros have been removed the outcome is exactly the same:

777
511
-rwxrwxrwx
753
491
-r-xr-x-wx
500
320
-r-x------

In conclusion, the leading zeros are not required at all. It was the incorrect type that was causing the issue.