初次接触go

公司做云原生相关交付相关的支持生态产品开发,主要语言就是go,所以我想学好go~
还没写过,想先了解下基础,然后再开始写一些接口。
现在正在看一些go的基础介绍和语法

起步

安装

https://golang.google.cn/dl/

配置环境变量

https://zhuanlan.zhihu.com/p/349664265
vim ~/.bash_profile 打开编辑

export GOROOT=/usr/local/go
export GOPATH=/Users/yoocoo/godev
export GOBIN= G O R O O T / b i n e x p o r t P A T H = GOROOT/bin export PATH= GOROOT/binexportPATH=PATH:$GOBIN

source ~/.bash_profile 重新应用环境变量

制作第一个应用程序

demo

1.建立工程文件夹 go

$ pwd
/Users/***/Desktop/go

2: 在工程文件夹中建立src,pkg,bin文件夹

$ ls
bin conf pkg src

3: 在GOPATH中添加projiect路径

$ go env
GOPATH="/Users/liupengjie/Desktop/go"

4: 那在src文件夹下建立以自己的包 example 文件夹

$ cd src/
$ mkdir example

5:在src文件夹下编写主程序代码代码 goproject.go
6:在example文件夹中编写 example.go 和 包测试文件 example_test.go
example.go 写入如下代码:

package example

func add(a, b int) int {
    return a + b
}

func sub(a, b int) int {
    return a - b
}

example_test.go 写入如下代码:

package example

import (
    "testing"
)

func TestAdd(t *testing.T) {
    r := add(2, 4)
    if r != 6 {
        t.Fatalf("add(2, 4) error, expect:%d, actual:%d", 6, r)
    }
    t.Logf("test add succ")
}
7:编译调试包
$ go build example

报错:go build example
package example is not in GOROOT (/usr/local/go/src/example)
export GO111MODULE=off
并且设置 go env -w GOPATH="/Users/yoocoo/Documents/fe/demo/go-example"
$ go test example
ok example 0.013s
$ go install example

$ ls /Users/***/Desktop/go/pkg/
darwin_amd64
$ ls /Users/***/Desktop/go/pkg/darwin_amd64/
example.a

8:编译主程序
oproject.go 写入如下代码:
package main 

import (
    "fmt"
)

func main(){
    fmt.Println("go project test")
}

$ go build goproject.go
  # 需要在src目录下build
	$ ls
example        goproject.go    goproject

   成功后会生成goproject文件
至此一个Go工程编辑成功。

   运行该文件:
$ ./goproject
go project test

总结

好目录结构; GOPATH=工程根目录;其下应创建src,pkg,bin目录,bin目录中用于生成可执行文件,pkg目录中用于生成.a文件; golang中的import name,实际是到GOPATH中去寻找name.a, 使用时是该name.a的源码中生命的package 名字

注意点
1.系统编译时 go install abc_name时

系统会到GOPATH的src目录中寻找abc_name目录,然后编译其下的go文件;

2.同一个目录中所有的go文件的package声明必须相同

所以main方法要单独放一个文件,否则在eclipse和liteide中都会报错; 编译报错如下:(假设test目录中有个main.go 和mymath.go,其中main.go声明package为main,mymath.go声明packag 为test); $ go install test can’t load package: package test: found packages main (main.go) and test (mymath.go) in /home/wanjm/go/src/test 报错说 不能加载package test(这是命令行的参数),因为发现了两个package,分别时main.go 和 mymath.go;

3.对于main方法

只能在bin目录下运行 go build path_tomain.go; 可以用-o参数指出输出文件名;

4.可以添加参数 go build -gcflags “-N -l” ****

可以更好的便于gdb;详细参见 http://golang.org/doc/gdb

5.gdb全局变量主一点

如有全局变量 a;则应写为 p ‘main.a’;注意但引号不可少;
命令
$ go
Go is a tool for managing Go source code.

Usage:

go command [arguments]

The commands are:

build       compile packages and dependencies
clean       remove object files
doc         show documentation for package or symbol
env         print Go environment information
bug         start a bug report
fix         run go tool fix on packages
fmt         run gofmt on package sources
generate    generate Go files by processing source
get         download and install packages and dependencies
install     compile and install packages and dependencies
list        list packages
run         compile and run Go program
test        test packages
tool        run specified go tool
version     print Go version
vet         run go tool vet on packages

Use “go help [command]” for more information about a command.

Additional help topics:

c           calling between Go and C
buildmode   description of build modes
filetype    file types
gopath      GOPATH environment variable
environment environment variables
importpath  import path syntax
packages    description of package lists
testflag    description of testing flags
testfunc    description of testing functions

Use “go help [topic]” for more information about that topic.
go env用于打印Go语言的环境信息。
go run命令可以编译并运行命令源码文件。
go get可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。
go build命令用于编译我们指定的源码文件或代码包以及它们的依赖包。
go install用于编译并安装指定的代码包及它们的依赖包。
go clean命令会删除掉执行其它命令时产生的一些文件和目录。
go doc命令可以打印附于Go语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的。
go test命令用于对Go语言编写的程序进行测试。
go list命令的作用是列出指定的代码包的信息。
go fix会把指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码。
go vet是一个用于检查Go语言源码中静态错误的简单工具。
go tool pprof命令来交互式的访问概要文件的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值