Go Code
目录
备注工作空间(Workspaces)GOPATH环境变量包路径(Package Path)你的第一个程序你的第一个类库包名字(Package Name)测试集成备注
备注返回目录
此文主要是对官方教程的学习总结,官方教程:http://golang.org/doc/code.html。
工作空间(Workspaces)返回目录
Go代码必须保持在一个workspace,workspace是一个目录结构,他有三个子目录构成:
- src:包含了组成packages的源代码,一个目录就是一个package。
- pkg:包含了package objects(编译后的类库)。
- bin:包含了executable commands(编译后的可执行程序)。
go tool编译packages,然后将编译结果安装到pkg目录或bin目录,下面是一个湿示例:
GOPATH环境变量返回目录
GOPATH环境变量指向了Workspace的位置,如果没有设置的话,自己去设置一下,否则go install会执行失败。
包路径(Package Path)返回目录
标准类库的packages可以使用短名字,如:fmt。对于你自己的Packages,最好提供一个base path(基路径),这可以避免命名冲突,下面是我的命名原则:
1 happygo.codeplex.com/study(源代码服务提供商仓库/项目)。
你的第一个程序返回目录
选择一个包路径
1 happygo.codeplex.com/study/hello
hello.go
1 package main //command executable(命令行可执行程序)必须使用main作为package名字。
2
3 import "fmt"
4
5 func main() {
6 fmt.Print("你好,世界!\n")
7 }
项目结构
你的第一个类库返回目录
选择一个包路径
1 happygo.codeplex.com/study/hellolib
hellolib.go
1 package hellolib
2
3 func Max(x int, y int) int {
4 if x >= y {
5 return x
6 }
7
8 return y
9 }
修改hello.go,调用类库
1 package main
2
3 import (
4 "fmt"
5 "happygo.codeplex.com/study/hellolib"
6 )
7
8 func main() {
9 fmt.Print("你好,世界!\n")
10 fmt.Printf("2 和 3中最大的是 %d!", hellolib.Max(2, 3))
11 }
项目结构
注意:Go使用静态链接(会将所依赖的代码链接到一个文件)。
包名字(Package Name)返回目录
Go源文件必须以包声明开始:
1 package name
一些规则:
- 一个package(文件件)中的所有文件必须使用相同的名字。
- Go语言约定import path(导入路径)的最后一个元素是包名字。
- Executable Commands必须使用 package main。
测试集成返回目录
Go提供了 go test 命令和 testing package帮助我们做测试,下面是测试的组织规则:
- 文件必要以 _test.go 结尾。
- 函数名必须包含如下签名:func TestXXX(t *testing.T)。
hellolib_test.go
1 package hellolib
2
3 import "testing"
4
5 func TestMax(t *testing.T) {
6 const x, y = 2, 3
7 max := Max(x, y)
8 if max == x {
9 t.Error("Max错误!")
10 }
11 }
备注返回目录
大环境搞明白了,语法就快了,再用一天时间学习一下语法,然后用Google App Engine开发个应用试试。
Go Code的更多相关文章
- Visual Studio Code 代理设置
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- http status code
属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...
- Visual Studio Code——Angular2 Hello World 之 2.0
最近看到一篇用Visual Studio Code开发Angular2的文章,也是一篇入门教程,地址为:使用Visual Studio Code開發Angular 2專案.这里按部就班的做了一遍,感觉 ...
- WebStorm 2016 最新版激活(activation code方式)
WebStorm 2016 最新版激活(activation code方式) WebStorm activation code WebStorm 最新版本激活方式: 今天下载最新版本的WebStorm ...
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
.net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对岸的苹果园越来越茂盛,实在不想再去做一只宅猿了.于是,.net猿决定搭上小鲸鱼的渡轮到苹果园去看 ...
随机推荐
- oracle_连接数_查看
查看oracle数据库的连接数以及用户 .查询oracle的连接数 select count(*) from v$session; .查询oracle的并发连接数 select count(*) ...
- 内存排查 valgrind
内存问题排查工具 --- valgrind 1. 概述 2. Valgrind 3. 内存泄漏监测 3.1. 示例代码 3.2. 编译它 3.3. 用Valgrind监测进程的内存泄漏 4. 悬挂指针 ...
- BS导出csv文件的通用方法(.net)
最近把以前项目里用的导出文件的功能提取成了dll,通过读取Attribute来得到要导出的表头(没有支持多语言),使用时只要组织好要导出的数据,调用方法就好了,希望对大家有用. 使用时只需引用下载包里 ...
- 使用Jenkins来构建Docker容器
使用Jenkins来构建Docker容器(Ubuntu 14.04) 当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,dua ...
- 平安某金所奇葩的面经-关于幂等和ROA设计的反思
在公司一直在做跟支付有关的项目,某日接到平安某金所一男子电话,应该是之前某猎头投的,我正好在吃早饭(也不能怪他们上班早,我们公司弹性工作制,我一般上班比较晚). 因为饭馆信号不好,只能赶紧放下剩下的半 ...
- Linux常用命令汇总-速查
对Linux新手有用的20个命令 对中级Linux用户有用的20个命令 对Linux专家非常有用的20个命令 20个最受欢迎的Linux命令 20个有趣的Linux命令
- .NET开源项目 TOP 25
.NET开源项目 TOP 25 如果知道.NET项目在开源中国的git上所占的比重只有5%的话,为什么这个<2014年国人开发的最热门的开源软件TOP 100>榜中.NET项目那么少就是情 ...
- 探究Java中Map类
Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部 ...
- WaitHandle、AutoResetEvent、ManualResetEvent
多线程中的锁系统(三)-WaitHandle.AutoResetEvent.ManualResetEvent 介绍 本章主要说下基于内核模式构造的线程同步方式,事件,信号量. 目录 一:理论 二:Wa ...
- POJ3233(矩阵二分再二分)
题目非常有简单: Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + ...