• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > 创建第一个Go语言程序Hello,Go!

创建第一个Go语言程序Hello,Go!

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了go语言helloworld,go helloworld,go hello,c语言hello world程序,c语言程序hello等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

建立一个用于编写Go程序的工作目录go-examples,其绝对路径为/home/go-examples.开始编写我们的第一个Go程序。

一、在go-examples下创建一个文件hello.go

//hello.go  
package main

import "fmt"//实现格式化的I/O 
 
/*Printf someting*/ 
func main(){  
       fmt.Printf("Hello,GO!\n")  
}
</div>

我们来分析下这个程序:

1、程序中的第2行这个是必须的。所有的Go文件以package <something>开头,对于独立运行的执行文件必须是package main;

2、第4行说需要将”fmt”包加入main。不是main的其他包都被称为库,其他许多编程语言有着类似的概念。

3、第1行和第4行中的//和/*---*/都是注释

4、package main 必须首先出现,紧跟着是import。在Go中,package 总是首先出现,然后是import,然后是其他所有内容。当Go 程序在执行的时候,首先调用的函数是main.main(),这是从C 中继承而来。这里定义了这个函数;

5、第8行调用了来自于fmt包的函数打印字符串到屏幕

二、编译和运行代码

编译该源文件并执行生成的可执行文件

[root@localhost go-examples]# go build hello.go  
[root@localhost go-examples]# ls  
hello hello.go  
[root@localhost go-examples]# ./hello  
Hello,GO! 
</div>

通过go build加上要编译的Go源文件名,我们即可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉.go后缀。当然我们也可以通过-o选项来指定其他名字:

[root@localhost go-examples]# go build -o firstgo hello.go  
[root@localhost go-examples]# ls  
firstgo hello.go 
</div>

如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件:

[root@localhost go-examples]# go build  
[root@localhost go-examples]# ls  
go-examples hello.go 
</div>

三、程序入口点(entry point)和包(package)

Go保持了与C家族语言一致的风格:即目标为可执行程序的Go源码中务必要有一个名为main的函数,该函数即为可执行程序的入口点。除此之外 Go还增加了一个约束:作为入口点的main函数必须在名为main的package中。正如上面hellogo.go源文件中的那样,在源码第 一行就声明了该文件所归属的package为main。

Go去除了头文件的概念,而借鉴了很多主流语言都采用的package的源码组织方式。package是个逻辑概念,与文件没有一一对应的关系。 如果多个源文件都在开头声明自己属于某个名为foo的包,那这些源文件中的代码在逻辑上都归属于包foo(这些文件最好在同一个目录下,至少目前 的Go版本还无法支持不同目录下的源文件归属于同一个包)。

我们看到hellogo.go中import一个名为fmt的包,并利用该包内的Printf函数输出"Hello, Go!"。直觉告诉我们fmt包似乎是一个标准库中的包。没错,fmt包提供了格式化文本输出以及读取格式化输入的相关函数,与C中的printf或 scanf等类似。我们通过import语句将fmt包导入我们的源文件后就可以使用该fmt包导出(export)的功能函数了(比如 Printf)。

在C中,我们通过static来标识局部函数还是全局函数。而在Go中,包中的函数是否可以被外部调用,要看该函数名的首母是否为大写。这是一种 Go语言固化的约定:首母大写的函数被认为是导出的函数,可以被包之外的代码调用;而小写字母开头的函数则仅能在包内使用。在例子中你也看到了 fmt包的Printf函数其首母就是大写的。

四、GOPATH

把上面的hellogo.go稍作改造,拆分成两个文件:main.go和hello.go

//hello.go  
package hello  
 
import "fmt" 
 
func Hello(who string){  
     fmt.Printf("Hello,%s!\n", who)  
} 
</div>

//main.go  
package main  
 
import "hello" 
 
func main(){  
     hello.Hello("GO")  
}
</div>

用go build编译main.go 结果如下

[root@localhost go-examples]# go build main.go  
main.go:4:8: import "hello": cannot find package 
</div>

编译器居然提示无法找到hello这个package,而hello.go中明明定义了package hello了。这是怎么回事呢?原来go compiler搜索package的方式与我们常规理解的有不同,Go在这方面也有一套约定,这里面涉及到一个重要的环境变量:GOPATH。我们可以使用go help gopath来查看一下有关gopath的manual。

Go compiler的package搜索顺序是这样的,以搜索hello这个package为例:

* 首先,Go compiler会在GO安装目录(GOROOT,这里是/home/go/)下查找是否有src/pkg/hello相关包源码;如果没有则继续;

* 如果export GOPATH=PATH1:PAHT2,则Go compiler会依次查找是否存在PATH1/src/hello、PATH2/src/hello;配置在GOPATH中的PATH1和PATH2被称作workplace;

* 如果在上述几个位置均无法找到hello这个package,则提示出错。

在本例子中,我们尚未设置过GOPATH环境变量,也没有建立类似PATH1/src/hello这样的路径,因此Go compiler显然无法找到hello这个package了。我们来设置一下GOPATH变量并建立相关目录:

[root@localhost go-examples]# export GOPATH=/home/go-examples/  
[root@localhost go-examples]# mkdir src/hello -p  
[root@localhost go-examples]# mv hello.go src/hello/  
[root@localhost go-examples]# go build main.go  
[root@localhost go-examples]# ls  
main main.go src  
[root@localhost go-examples]# ./main  
Hello,GO! 
</div>

五、Go install

将main.go移到src/main中,这样这个demo project显得更加合理,所有源码均在src下:
[root@localhost go-examples]# cd src/  
[root@localhost src]# ls  
hello main.go 
</div>
Go提供了install命令,与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。我们以main目录为例:

您可能想查找下面的文章:

  • Go语言hello world实例
  • 创建第一个Go语言程序Hello,Go!

相关文章

  • 简单了解Go语言中函数作为值以及函数闭包的使用
  • Go语言的os包中常用函数初步归纳
  • go语言通过zlib压缩数据的方法
  • 理解Golang中的数组(array)、切片(slice)和map
  • go语言中range用法
  • Golang排列组合算法问题之全排列实现方法
  • Go语言中slice的用法实例分析
  • Go语言Cookie用法分析
  • Go语言中函数的参数传递与调用的基本方法
  • Go语言多值替换的HTML模板实例分析

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • golang实现sql结果集以json格式输出的方法
    • Go中map数据类型3点小知识
    • Golang算法之田忌赛马问题实现方法分析
    • golang实现http服务器处理静态文件示例
    • go语言通过odbc访问Sql Server数据库的方法
    • 创建第一个Go语言程序Hello,Go!
    • Go语言展现快速排序算法全过程的思路及代码示例
    • Go语言的os包中常用函数初步归纳
    • Go语言开发环境搭建与初探(Windows平台下)
    • Go语言实现的树形结构数据比较算法实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有