### 环境:
操作系统:Windows 10
Go Version: go version go1.10.3 windows/amd64
### 示例代码:
```
counts := make(map[string]int);
os.Stdin.Chmod(os.ModeSetuid)
input := bufio.NewScanner( os.Stdin);
os.Stdin.WriteString("this is a test")
for ; ; {
if res := input.Scan(); res {
test := input.Text();
if test == "exit"{
break;
}
counts[test]++;
}else {
fmt.Printf("%s", input.Err());
break;
}
}
```
  在加入os.Stdin.Chmod(os.ModeSetuid)前无法执行成功,加入该行代码后可以执行成功,错误原因:
当前所使用的用户权限不足已读取os.Stdin,下面是创建标注输入输出的源码:
D:/programdata/Golang/src/os/file.go
```
var (
Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
)
```
  每次在调用os 包的时候都会创建三个全局的变量,本质上是创建三个绑定在std输出/输入IO的File对象,所以我们像对待普通的File对象一样对待os.Stdin即可,将File的userId 设置为自己当前的user Id ,即可拥有读取权限。
有疑问加站长微信联系(非本文作者))