IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]《Go语言入门》第一个Go语言程序——HelloWorld

    testcs_dn发表于 2015-11-29 18:46:37
    love 0

    概述

    上一篇讲了 如何在Windows下安装Go语言编程环境,接下来讲一下入门必修课:第一个Go语言程序——HelloWorld。

    其实Go语言入门是很简单的,上一篇已经成功在Notepad++中运行HelloWorld,只是在命令行中编译运行了出现了一点小曲折,这里记录说明一下。

    编写HelloWorld

    你可以使用任一文本编辑器来编写Go代码,我比较喜欢使用Notepad++,不过它也只能是通过插件提供代码着色,没有代码提示功能。

    package main
    
    import "fmt"
    
    func main() {
    	fmt.Printf("Hello, world.\n")
    }
    将以下代码保存到“C:\Go\src\hello.go”。

    编译执行

    打开命令行,执行:go install hello,如下图:


    提示找不到“hello”这个包,$GOPATH 未设置;

    E文不好,开始以为$GOPATH 未设置这个问题,设置GOPATH环境变量

    然后将hello.go复制到:C:\Go\work\src

    执行:go install hello,居然还是找不到!

    这是什么原因呢,后来发现是学的太着急了,忽略了下一节中的一句话“每个目录都对应一个包”。

    找到答案了,在“C:\Go\src”目录下新建“hello”文件夹,把hello.go移动到这个文件夹下面,再执行:go install hello

    编译成功了,然后执行:hello,看到久违的 Hello world了,如下图:


    代码的组织

    工作空间

    go 工具为公共代码仓库中维护的开源代码而设计。 无论你会不会公布代码,该模型设置工作环境的方法都是相同的。

    Go代码必须放在工作空间内。它其实就是一个目录,其中包含三个子目录:

    • src 目录包含Go的源文件,它们被组织成包(每个目录都对应一个包),
    • pkg 目录包含包对象,
    • bin 目录包含可执行命令。

    go 工具用于构建源码包,并将其生成的二进制文件安装到 pkg 和 bin 目录中。

    src 子目录通常包会含多种版本控制的代码仓库(例如Git或Mercurial), 以此来跟踪一个或多个源码包的开发。

    以下例子展现了实践中工作空间的概念:

    bin/
    	streak                         # 可执行命令
    	todo                           # 可执行命令
    pkg/
    	linux_amd64/
    		code.google.com/p/goauth2/
    			oauth.a                # 包对象
    		github.com/nf/todo/
    			task.a                 # 包对象
    src/
    	code.google.com/p/goauth2/
    		.hg/                       # mercurial 代码库元数据
    		oauth/
    			oauth.go               # 包源码
    			oauth_test.go          # 测试源码
    	github.com/nf/
    		streak/
    		.git/                      # git 代码库元数据
    			oauth.go               # 命令源码
    			streak.go              # 命令源码
    		todo/
    		.git/                      # git 代码库元数据
    			task/
    				task.go            # 包源码
    			todo.go                # 命令源码
    此工作空间包含三个代码库(goauth2、streak 和 todo),两个命令(streak 和 todo) 以及两个库(oauth 和 task)。


    小结

    虽然Go语言入门比较简单,但我在看文档时不够细心,导致这个小插曲,回头去细读才发现问题所在。

    参考

    如何使用Go编程







沪ICP备19023445号-2号
友情链接