Golang学习当中的一些小笔记

一、简介

Golang我的理解,是一个Python版本的C语言。因为在Golang当中,充满了结构体、指针等我们在C当中耳熟能详的结构。而且Golang又可以使用a:=1这种类型消除化的变量定义方式,类似于python。

二、要点记录

1、函数传值

在Go语言中,函数的传值及传地址是与C语言几乎相同的。但是有一点需要注意,即数组的传递,在Go语言当中,也是传的值而不是地址。我们都知道在C当中数组的传递是传的地址。

2、slice的append

slice是Go语言当中类似于java语言当中arraylist的一种结构,可以实现自动的扩容。但是如果将某个slice传入某个函数后,在函数当中发生了扩容现象后,由于扩容是产生了一个新的数组,这个影响是不会保留到退出函数之后的。即[1,2]在append并发生扩容成为[1,2,3,4]后,实际上在退出这个函数后,在函数外访问到的值还是[1,2]。

3、配置包管理工具govendor

govender项目地址为:https://github.com/kardianos/govendor,在大多数教程中,安装包管理工具是用以下命令

go get -u github.com/kardianos/govendor

如果出现了govendor command not found的问题,检查以下三种可能:

1、如果我们登陆shell时使用的不是root用户,需在前面加上sudo,否则会出现govender command not found的问题。

2、执行

go install github.com/kardianos/govendor

这将构建govendor并放入$GOBIN(默认情况下$GOPATH/bin

3、GOPATH的设置

export $GOPATH=~/go
export PATH=$PATH:$GOPATH/bin

4、在执行build.sh的时候

如果出现任何

main.go:5:2: cannot find package "git.apache.org/thrift.git/lib/go/thrift" in any of

的提示,请使用govendor fetch -v “git.apache.org/thrift.git/lib/go/thrift”