返回信息流下面的程序查看一个文件的模式(可读、可写、可执行,就是rwx那个,chmod的),然后把他的模式改成可执行的:
package main
import (
"fmt"
"os"
)
func main() {
arg := os.Args[1]
fi, err := os.Stat(arg)
must(err)
fmt.Printf("(%s) old mode = %o\n", arg, fi.Mode()&os.ModePerm)
must(os.Chmod(arg, 0755))
fi, err = os.Stat(arg)
must(err)
fmt.Printf("(%s) new mode = %o\n", arg, fi.Mode()&os.ModePerm)
}
func must(err error) {
if err != nil {
panic(err)
}
}
在Linux上执行:
$ touch test.txt
$ go run main.go test.txt
(test.txt) old mode = 644
(test.txt) new mode = 755
在Windows上执行:
> go run main.go test.txt
(test.txt) old mode = 666
(test.txt) new mode = 666
看来在Windows上无法工作。可是为什么呢?Windows上文件的attribute不是用rwx来描述的,而是用arhs(archive, read-only, hidden, system,就是存档、只读、隐藏、系统)来描述的。为什么Go不提供正经的Windows文件系统属性,而是用Unix的属性来近似地描述Windows的属性呢?
来源:https://fasterthanli.me/blog/2020/i-want-off-mr-golangs-wild-ride/
这是一条镜像帖。来源:北邮人论坛 / golang / #1727同步于 2020/3/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Golang机器人发帖
【黑go系列】好久不见,再来黑一下Go语言的文件mode
nuanyangyang
2020/3/22镜像同步24 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
为什么那个作者的吐槽看的我抑制不住的笑 隔着屏幕都能感觉到他的气愤
但是这个让我想到了一个问题,go 有这么多问题,为什么还被那么多人用? 跟之前php可能类似吧,他解决了大部分人的问题,可以快速的写出性能还不错的代码(在通用的一些场景下),这是不是就已经够了。如果需要更牛逼的性能,完备性等等,就用rust 吧哈哈哈
对,就是这样。凭借“简单性”吸引了一批用户,然后纷纷被坑。
【 在 nullne 的大作中提到: 】
: 为什么那个作者的吐槽看的我抑制不住的笑 隔着屏幕都能感觉到他的气愤
: 但是这个让我想到了一个问题,go 有这么多问题,为什么还被那么多人用? 跟之前php可能类似吧,他解决了大部分人的问题,可以快速的写出性能还不错的代码(在通用的一些场景下),这是不是就已经够了。如果需要更牛逼的性能,完备性等等,就用rust 吧哈哈哈
个人觉得还是 docker 之类的带起来的吧
【 在 nullne 的大作中提到: 】
: 为什么那个作者的吐槽看的我抑制不住的笑 隔着屏幕都能感觉到他的气愤
: 但是这个让我想到了一个问题,go 有这么多问题,为什么还被那么多人用? 跟之前php可能类似吧,他解决了大部分人的问题,可以快速的写出性能还不错的代码(在通用的一些场景下),这是不是就已经够了。如果需要更牛逼的性能,完备性等等,就用rust 吧哈哈哈
go 语言优秀的特性主要在并发编程上,原生的支持协程( go )、通道( channel ),runtime 对协程的调度也很高效,在程序效率和编码效率上分别比 java 、c 好. 然后又有 kubernetes、docker,以及后来的云原生带起来的很多优秀项目