txgo

第 4911 号会员 /

回复了 caodandeyingyu 创建的主题: Go如何使用 github包?

还有就是go官方推荐使用一个gopath目录,然后使用vendor方式来管理各个项目的依赖。当然,这个有不同的实践,有些喜欢一个项目一个gopath,很少同一个项目使用多个gopath目录的。源代码是放在gopath的src目录下的。

回复了 caodandeyingyu 创建的主题: Go如何使用 github包?

go help gopath查看完整帮助信息。

错误提示说是gopath设置错误应该是很明确的,首选你选择了使用使用过个gopath目录的设置方式,在不同的OS平台下分隔符是不一样的,比如linux下是:,Windows下是;。设置完成了之后,可以用go env查看确认一下,因为你运行的时候的环境变量可能不一定和你所谓工程设置是否一致(比如shell初始化的执行脚本自动设置了gopath,还是手工设置的gopath),建议提供跟配置有关的设置问题,提供go env输出的信息,大家好帮忙提供解决办法。

回复了 caibirdme 创建的主题: 怎么交换结构体中的数组元素

go可以一次性赋多个值,也就说可以直接交换, 如果不需要输出这个swap函数,可以一行代码直接完成,不需要使用函数。

obj.arr[2], obj.arr[5] = obj.arr[5], obj.arr[2]

下面是完整代码

package main

import (
    "fmt"
)

type Item struct {
    arr    []int32
    length int32
}

func createItem(len int32) *Item {
    return &Item{arr: make([]int32, len), length: 0}
}

func main() {
    obj := createItem(10)
    fmt.Println(obj)

    for i := range obj.arr {
        obj.arr[i] = int32(i)
    }

    obj.arr[2], obj.arr[5] = obj.arr[5], obj.arr[2]
    fmt.Println(obj)
}

回复了 创建的主题:

蓝灯挺好的吧,谐音啊,可以当拼音读了

跟宽带有关系,我一个地方可以,一个地方不行,有时候可用,有时候不可用,看网页比较快,其它不太理想,但是能用就很牛了。其实还是去github/getlantern/lantern 下载感觉比较放心,国内提供镜像就好了

回复了 Faye_Xia 创建的主题: 没想好标题

注册了发现不支持win10 继续lantern了

回复了 zzzzxasdadw 创建的主题: 新手求教一下关于安装go

不用mac,但是估计问题是环境变量设置的问题吧,请按照安装手册,确认GOROOT和GOPATH环境变量是否正确设置,运行go env命令可以看到当前的设置,

还有go build失败应该有提示信息,提问的时候最好请提供完整信息,这样才好定位问题。

回复了 dyllen 创建的主题: http.Handler类型,加&和不加&的问题?

也补充一点: 这个问题本质上接口类型(handler)的方法接收值是否是指针的问题,我也搞了很久才大致明白,原有有两个容易混淆的地方:

  1. 对于非接口类型,方法的接收值无论是值还是指针,使用变量值或者指针都是可以编译通过的,golang会自动帮你转换,区别是只有指针类型接收值的方法,才会改变接收值的内部状态

  2. 对于接口值,由于接口值内部不仅包括了接口类型,而且存储了真实的类型值,接口类型的方法接收值必须严格一致,也就是这个地方报错的原因,

  3. 通常的空结构体类型,可以使用值(而不是指针)作为方法接收值,因为既不涉及到改变内部状态(结构体的成员),也没有传值的负担(空结构体传值没有额外代价),所以此处可以将方法接收值改为非指针的,降低使用指针的心智负担(夸张了 :) )

回复了 Simbory 创建的主题: 还在寻找Go语言IDE的同志请注意了

我分享一点安装的过程,主要是qiang的问题。

OS:Ubuntu 15.10
其它工具:git

  1. 安装 go, 本站有下载,安装完成后 配置好 GOROOT 和GOPATH 环境变量,并用 go env 确认
  2. 安装lantern, 参考 https://github.com/getlantern/lantern 的说明,直接下载二进制文件就行(ubuntu/debain)有.deb包,安装完成后 启动,默认开启的代理地址为 http(s)://localhost:8787 下面的大文件下载如果下载不成功,就可以使用这个代理。
  3. 按照此贴的正文安装vscode,并去插件中心安装golang插件支持
  4. 安装插件必须的工具,这一步最烦人,go get 会有一半出错,原来就是qiang,本站可以下对应的包,
  5. 我采取了另外一个办法:github。 具体做法是,先用 godoc -http :6060启动,浏览器浏览http://localhost:6060/pkg/#other 可以看到 golang.org/x/ 下面的项目列表,这些项目其实已经托管到 github, 但是路径依然是原来的路径保持兼容,所以现在 $GOPATH/src/目录下创建对应目录: mkdir $GOPATH/src/golang.org/x/ 然后去github把repo 下载到本地就可以,比如 net项目就是在$GOPATH/src/golang.org/x/ 目录下运行 git clone https://github.com/golang/net.git ,然后返回第4步,直到所有的工具都可以在命令行运行
  6. 安装完成这些就已经就位了,最后按照go插件进行配置,打开 vscode点击File->Preferences->User Settings,在右边的 settings.json(位于$HOME/.config/Code/User目录),进行配置,go.goroot, go.gopath确认要配置到正确目录,其它可以试验,左边栏的所有选项都可以覆盖默认值。
    基本安装配置就可以完成了。
  7. 如果需要debug,需要安装delve并进行相应配置,建议直接用github repo进行安装。