为了账号安全,请及时绑定邮箱和手机立即绑定

go os.FileMode()传值问题

标签:
Go

linux中的权限rwx分别对应4 2 1,相加的值为7,习惯了linux中权限命令使用,会将 os.FileMode(777) 误解等价于 777权限,但是将777传入os.FileMode,你会发现打印出来的不是 -rwxrwxrwx

可能会想只要在编程的时候,在前面加个0不就行了?但是有情况是这样的,就是外部传入一个变量值是十进制数777

package mainimport (    "fmt"
    "os")func main() {
    fmt.Println(os.FileMode(777), 777)
    fmt.Println(os.FileMode(0777), 0777)
}

输出结果:
-r----x--x 777-rwxrwxrwx 511

正确使用os.FileMode()时,应该先将777 先看成八进制,然后转成十进制值,传入os.FileMode中,转换方法如下

方法一:使用标准库中的strconv.ParseInt,如下

mode := 777um, _ := strconv.ParseInt(strconv.Itoa(mode), 8, 0)// 完整测试代码package mainimport (    "fmt"
    "os"
    "strconv")func main() {
    um, _ := strconv.ParseInt(strconv.Itoa(777), 8, 0)
    fmt.Println(os.FileMode(777), 777)
    fmt.Println(os.FileMode(0777), 0777)
    fmt.Println(os.FileMode(um), um)
}

输出:
-r----x--x 777-rwxrwxrwx 511-rwxrwxrwx 511

方法二:自己编写转换进制函数



作者:laijh
链接:https://www.jianshu.com/p/216cb89c4d81


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消