小编Bar*_*rim的帖子

查找在sudo(GoLang)下运行时执行程序的用户

我正在创建一个小程序,需要对1024以下的网络端口进行特权访问,因此它与sudo一起运行.

如果实用程序需要做的部分工作需要知道调用应用程序的用户是谁,我需要一种方法来查询实际用户是谁; 使用os/user方法让用户指向"系统管理员"或其他root用户,因为它在sudo上下文中运行.

在GoLang中是否有办法拉动在sudo下运行应用程序的用户?(转到1.4.2,在OS X 10.10.3上运行)

sudo go username

4
推荐指数
3
解决办法
2893
查看次数

Golang:为作为指针的struct成员赋值

我正在尝试为作为指针的struct成员分配一个值,但它在运行时给出了"恐慌:运行时错误:无效的内存地址或nil指针取消引用"...

package main

import (
    "fmt"
    "strconv"
)

// Test
type stctTest struct {
    blTest *bool
}

func main() {

    var strctTest stctTest
    *strctTest.blTest = false

    fmt.Println("Test is " + strconv.FormatBool(*strctTest.blTest))

}
Run Code Online (Sandbox Code Playgroud)

运行时错误似乎来自于使用*strctTest.blTest = false赋值,但为什么呢?如何将其设置为false?

struct pointers go

4
推荐指数
1
解决办法
5859
查看次数

如果将.NET语言编译为CIL,.NET语言选择是否重要?

如果所有.NET语言都编译成CIL,那是否意味着它背后的语言(VB.NET,C#等)并不重要?或者编译过程是否在语言之间区别对待代码?有明显的差异吗?

.net

3
推荐指数
2
解决办法
532
查看次数

学习网络语言

我想知道其他人在创建Web服务应用程序时遇到了什么,哪种语言/框架最适合初学者?是否所选语言的特性使其更适合某种思维方式的程序员,这使得XYZ语言更能吸引特定程序员?

我正在研究学习php,Ruby(可能是RoR)或Python(使用Django).我做的每一次搜索都会出现一个人说一个人是多么美妙,然后另一个人抨击它,我不知道为什么特定语言会吸引特定用户并且更适合选择使用,或者特定选择对某个特定任务有吸引力,例如与MySQL数据库通信或者应用程序的长期维护.

任何人都有这方面的意见而没有把它变成辩论?

php django ruby-on-rails choice

2
推荐指数
2
解决办法
536
查看次数

标准库错误的覆盖率测试

我一直在尝试了解 Go 的内置测试框架并获得适当的测试覆盖率。

在我正在测试的文件之一中,我只获得了约 87% 的覆盖率:

coverage: 87.5% of statements

这是测试中涵盖的代码部分:

// Check that the working directory is set
if *strctFlags.PtrWorkDir == "" {

// if the working directory is empty, set it to the current directory
strTemp, err := os.Getwd()
if err != nil {
    return "", errors.New("Could not get current working directory")
}

*strctFlags.PtrWorkDir = strTemp

} else if stat, err := os.Stat(*strctFlags.PtrWorkDir); err != nil ||
!stat.IsDir() {

    // Existence check of the work dir
    return "", …
Run Code Online (Sandbox Code Playgroud)

error-handling unit-testing go

2
推荐指数
1
解决办法
1182
查看次数

Go/Golang从Mac到Windows的交叉编译:致命错误:找不到'windows.h'文件

简介:当我尝试交叉编译包含文件链中某个C文件的.go源文件,从Mac主机定位Windows AMD64时,我得到:

/usr/local/go/src/runtime/cgo/gcc_windows_amd64.c:8:10: fatal error: 'windows.h' file not found
Run Code Online (Sandbox Code Playgroud)

Pure Go代码似乎没有错误地交叉编译; 有没有办法在涉及C文件时获取正确的头文件以进行交叉编译?

更多细节:我在Mac上安装了LiteIDE,用于处理一些.go项目,LiteIDE使得将其他平台作为构建目标的目标相对简单.我在一个小测试项目上测试了它,纯粹是Go,它似乎运行没有错误.

后来我在一个当前更大的项目上尝试了它,并且必须调整IDE中的几个env设置才能使它工作(对没有启用CGO的C文件的抱怨,并且GOPATH设置不正确,即使它设置在.bash_profile中并在echo中验证$ VARIABLE就好了.)结果是

/usr/local/go/src/runtime/cgo/gcc_windows_amd64.c:8:10: fatal error: 'windows.h' file not found
Run Code Online (Sandbox Code Playgroud)

试图针对Linux(os linux,arch amd64)给出

# runtime/cgo
ld: unknown option: --build-id=none
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我已经仔细检查过我安装了XCode; 安装gcc:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr with-gxx-include-     dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/4.2.1
Apple LLVM version 7.3.0 (clang-703.0.29)
Target: x86_64-apple-darwin15.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Run Code Online (Sandbox Code Playgroud)

...和Go是最新版本:

go version go1.6.2 darwin/amd64
Run Code Online (Sandbox Code Playgroud)

我还检查过这不仅仅来自LiteIDE(因为LiteIDE似乎覆盖了env设置而忽略了终端中的内容?); 在控制台上的示例尝试给出:

MyUsername$ env GOOS=windows GOARCH=amd64 CGO_ENABLED=1 go build …
Run Code Online (Sandbox Code Playgroud)

cross-platform header-files go

0
推荐指数
1
解决办法
1943
查看次数