当试图运行go build在我的src目录,我得到这个错误: 导入运行时:当不使用cgo时,不允许使用C源文件:atomic_amd64x.c defs.c float.c heapdump.c lfstack.c malloc.c mcache.c mcentral.c mem_linux.c mfixalloc.c mgc0.c mheap.c msize .c os_linux.c panic.c parfor.c proc.c runtime.c signal.c signal_amd64x.c signal_unix.c stack.c string.c sys_x86.c vdso_linux_amd64.c 当我第一次开始学习Go时,我在安装1.2版的Ubuntu笔记本电脑(14.04 LTS,64位)上运行了sudo apt-get install golang 。 这运行良好,我能够build立,安装和运行的应用程序。 然后我跑autoremove摆脱它,然后从golang网站安装1,4。 这里发生了什么,我该如何解决? 谷歌search错误表明,它与以前安装版本的go有关,但我认为autoremove会清除它和任何依赖项(似乎,因为我确定我无法在任何地方findgolang,安装之前资源。 任何线索?
我试图看看HTTP服务器可以在我的机器上处理多less个请求,所以我尝试做一些testing,但差别太大,我感到困惑。 首先,我尝试用ab替代并运行这个命令 $ ab -n 100000 -c 1000 http://127.0.0.1/ 做1000个并发请求。 结果如下: Concurrency Level: 1000 Time taken for tests: 12.055 seconds Complete requests: 100000 Failed requests: 0 Write errors: 0 Total transferred: 12800000 bytes HTML transferred: 1100000 bytes Requests per second: 8295.15 [#/sec] (mean) Time per request: 120.552 [ms] (mean) Time per request: 0.121 [ms] (mean, […]
使用老版本,我可以在geany中configurationbuild命令 go install "%d" 但似乎在Go1你不能提供go install绝对path。 所以我想要一个命令让我在geany上运行 go install mypackagename 当我编辑的文件是 /some/path/to/my/project/go/src/mypackagename/editedfile.go 我可以在设置中获得什么? 请考虑我是一个linux noob,并可能存在一个简单的解决scheme,使用标准shell命令的组合。
我想在我的程序中使用pprof,但是,与我阅读的文章(下面的链接)略有不同。 在我的结果中,我得到这样的表格: (pprof) top10 1.65s of 1.72s total (95.93%) Showing top 10 nodes out of 114 (cum >= 0.01s) flat flat% sum% cum cum% 1.19s 69.19% 69.19% 1.20s 69.77% syscall.Syscall 0.16s 9.30% 78.49% 0.16s 9.30% runtime._ExternalCode 这个列是什么: flat flat% sum% cum cum% ? 我正在阅读的文章: https : //software.intel.com/zh-cn/blogs/2014/05/10/debugging-performance-issues-in-go-programs http://blog.golang.org/profiling-走的程序
我开始学习Go,并且遇到了静态文件句柄的问题。 拥有这个: func main() { fs := http.FileServer(http.Dir("public")) http.Handle("/", fs) err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } 文件夹结构: main.go public – index.html 当我运行的go run main.go ,之后在index.html改变一些东西,再运行go run main.go ,在浏览器中查看不会改变。 所以我GOOGLE了一下,认为他们是在编译的二进制文件,并且因为main.go没有改变,所以不重新编译它。 所以我跑跑go run -a main.go强制重新编译,但它没有帮助。 我清除历史和caching铬,甚至尝试另一个浏览器和curl ,但仍然看到旧的静态文件,而在文件系统中只有新的版本。 所以这不是关于浏览器。 实际上,有一件事情是在浏览器中看到新版本的静态文件时,将public重命名为public2 (例如),并在main.go进行相同的更改。 这不是Go问题,因为这个例子在其他用户中可以正常工作。 所以这是我的系统。 我在Vagrant的默认Ubuntu 16.04上运行该代码。 vagrantfile: # -*- mode: ruby […]
在linux上发送kill消息, kill -s 2 <PID>或kill -s 15 <PID> 代码是: package main import ( "fmt" "os" "os/signal" ) func main() { sigs := make(chan os.Signal, 1) done := make(chan bool, 1) signal.Notify(sigs) go func() { sig := <-sigs fmt.Println(sig) }() fmt.Println("waiting") <-done fmt.Println("exiting") } 该程序不处理信号,只有CTRL+C运作良好。
我对Go很有新意,经过Go Lang的一些基本范例和文献。 目前我正在开发一个项目,我需要创build一个terminal应用程序。 在阅读termbox-go之后,我们决定使用termbox-go作为开发的基础库。 这个应用程序非常简单,用户将得到一组菜单,如下所示 Main Menu ——— 01) Menu 1 02) Menu 2 03) Menu 3 99) Quit Please enter your selection : __ 通过查看示例,我可以得到布局和所有的一切。 但是,我没有看到从terminal读取select的例子。 select完成后,用户将按“Enter”键。 任何人都可以分享一个例子,说明如何实现上述。 还有一些例子,用户屏幕有多个input区域,用户可以使用上下键移动并input值 – 如下所示 Enter Name : _____________ Enter DOB : ______________ Enter City: ______________ 任何示例或指针,高度赞赏。 谢谢
我遇到了一些问题,试图在OS X上交叉编译Go应用程序以在Linux / amd64上运行。 有问题的应用程序通过这个vips go软件包使用libvips 。 因此,它正在使用CGO,需要与CGO支持编译。 我在Go 1.4上运行下面的build命令 GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build 但最终会出现链接器错误 ld: unknown option: –build-id=none clang: error: linker command failed with exit code 1 (use -v to see invocation) 我假设我可能需要添加某种-ldflags参数,但我不确定。 是否有可能以这种方式交叉编译CGO应用程序,还是需要在目标系统上进行本机构build以避免问题和头痛?
你如何从Golang的标准input中读取大量数据? 我所有的读取目前停止在4095字节。 我已经尝试了很多东西,但我目前的代码如下所示: var stdinReader = bufio.NewReader(os.stdin) // Input reads from stdin while echoing back. func Input(prompt string) []byte { var data []byte // Output prompt. fmt.Print(prompt) // Read until newline. for { bytes, isPrefix, _ := stdinReader.ReadLine() data = append(data, bytes…) if !isPrefix { break } } // Everything went well. Return the data. […]
我是相当新的,甚至一般的Linux。 我在Linux环境中构build了一个应用程序,它使用基于cgo的gtk库( https://github.com/mattn/go-gtk/ )。 该应用程序在它的本地环境(linux 64bit)中build立良好,但是当我尝试为达尔文64位编译时,我得到以下结果: # net could not determine kind of name for C.AI_MASK # net could not determine kind of name for C.AI_MASK 我用来构build的命令行: env GOOS=$1 GOARCH=$2 CGO_ENABLED=1 go build $3 其中$ 1是达尔文和$ 2 amd64($ 3是我的应用程序的path)。 由于错误似乎来自我导入的库,我不知道该怎么做来解决这个问题。 我也读过,交叉编译cgo并不是真正的工作,因为它依赖于本地的macos的东西,所以它需要build立在mac上。 这是真的,还是有什么我可以做,使其在我的环境中工作? 我也有些困惑,因为似乎大多数人在讨论这个问题的时候都提到了1.5之前的版本,如果我理解的正确的话,在交叉编译的时候是完全不同的。 谢谢