Go语言学习(一):hello world
每学一门语言,程序猿们总是不厌其烦地写一遍hello world,这篇就是Go语言的hello world。
Go语言的环境搭建建议参考《Go Web编程》的第一章:Go 环境配置,里面写得足够详细。如果觉得《Go Web编程》里面写得太繁琐,也可以看官网的Getting Started。
环境搭建好之后,就可以在GOPATH的目录下新建src、pkg、bin这三个目录了。这三个目录的用途如下:
- src:存放源代码
- pkg:存放编译后生成的文件,个人理解是类似于Java中存放jar包的lib目录。
- bin:存放编译后生成的可执行文件
在src目录下新建helloworld目录,类似于一个project的名称吧,当然,正规点的话就在src目录下新建com.XXX目录,然后在com.XXX目录下再新建helloworld目录。
在helloworld目录下新建helloworld.go文件,在文件中输入下面的代码:
?
package main
import "fmt"
func main() {
fmt.Printf("hello, world!n")
}
命令行窗口进入到helloworld目录,键入命令:go run helloworld.go,就会返回结果:
?
hello, world!
Go使用package来组织代码。代码中第一行package <pkgName>告诉我们当前文件属于哪一个包,而源码中的main则告诉我们它是一个可独立运行的包,它编译后会产生可执行文件。除了main包之外,其他包编译后会产生*.a文件(也就是包文件)并放置在$GOPATH/pkg/$GOOS_$GOARCH目录下(我的是:D:GO_DATApkgwindows_amd64)。
此外,每一个可独立运行的Go程序,必定包含一个package main,而且在这个main包中必定包含一个入口函数main,这个函数既没有参数,也买有返回值。
个人疑问,入口函数没有参数,那要写一个带外部参数的可运行程序该怎么写?举个例子,假如go这个程序是用Go语言写的,那么go这个程序的main函数如何获得命令行中的参数从而执行不同的操作,如上文的命令:“go run helloworld.go”。
- 数据库中间件 MyCAT源码分析——跨库两表Join
- iOS一种动态栅格布局方案
- 消息队列中间件 RocketMQ 源码分析 —— Message 存储
- 数据库中间件 MyCAT 源码解析 —— 分片结果合并(一)
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由(一)之分库分表配置
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 解析(六)之删除SQL
- 数据库[分库分表]中间件 Sharding-JDBC 源码分析 —— SQL 解析(五)之更新SQL解析
- ExtJs+WCF+LINQ实现分页Grid
- 数据库[分库分表]中间件 Sharding-JDBC 源码分析 —— SQL 解析(四)之插入SQL
- 基于sliverlight + wcf的web 文字版IM 示例
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(三)之查询SQL
- zephir-(11)流程控制语句
- phalcon-入门篇7(Model层基础使用)
- Sharding-JDBC 源码分析 —— SQL 解析(二)之SQL解析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Gephi可视化拓扑图简单实战
- python连接到SQList数据库以及简单操作
- 在markdown编辑器使用html绘制表格
- 循环不变式:算法中基础概念的明晰
- Codeforces Round #615 (Div. 3)B. Collecting Packages
- 七大设计原则、单一职责原则
- JSP 基本凉凉,学妹不知道他是啥
- Codeforces Round #615 (Div. 3)C. Product of Three Numbers
- Codeforces Round #622 (Div. 2) A.Fast Food Restaurant
- 渗透测试实战 | 一次信息泄露引发的越权
- Vue创建项目及基本语法 一
- 学 Java 开发怎么能不知道 Filter 与 Listener
- Windows 安装 MySQL 常见问题
- LootCode-链表排序-Java
- 好久不用 jQuery, 来复习一下