GO语言基础
Go语言开发
一、Linux下搭建Go开发环境
首先下载Go语言的开发安装包,不管是在官方网站或者国内的Golang镜像都是可以的,注意区分64位和32位的安装包。
- 下载完安装包之后
tar zxvf进行解压。 - 利用命令
mv go /usr/src/go,把解压后的go目录移动到执行的目录。这样就在/usr/src/go中存放了go语言开发需要的各种部分。 - 在
~/.bashr文件中增加一些环境变量:
export GOPATH=~/Applications/Go
export GOROOT=/usr/src/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
- 然后
source ~/.bashr,加载bash设置,使之生效。 - 新建上面的各种需要的目录结构:

至此,GO语言的开发环境就搭建完成了。
二、第一个GO语言程序
进入到之前建立好的src目录中,新建目录结构hello,然后在hello目录中新建main.go。
package main
import "fmt"
func main() {
fmt.Println("hello world!")
}
然后在命令行中,通过命令go run main.go来运行这个go语言程序。或者可以先通过go build先生成可执行程序,然后再运行。
如果在
go build时,指定某个go文件,那么仅仅构建这一个模块,生成的名字与该go文件的名字相同。
如果不指定构建的模块,则构建整个工程,生成的名字与工程目录相同。
三、GO语言变量的声明、初始化、赋值
变量相当于是对一块数据存储空间进行命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量来使用这块存储空间。
GO语言变量的声明:
var v1 int
var v2 string
var v3 [10]int
var v4 []int
var v5 struct {
f int
}
var v6 *int
var v7 map[string]int
var v8 func(a int) int
var (
v1 int
va string
)
GO语言变量的初始化:
对于声明变量的同时需要初始化的场景,var关键字可有可无:
var v1 int = 10
var v1 = 10
v1 := 10
对于第三种方式,不能声明全局变量
表示同时进行变量的声明和初始化
定义在:=左侧的变量,不能是已经被声明过的变量
总结:
GO语言的声明用关键字
var 变量名 类型
GO语言赋值,不是用关键字也不使用类型
GO语言声明同时初始化,用上面三种方式,不能使用v1 = 10,因为它表示赋值,不表示变量的声明+初始化
GO语言的声明方式不会混淆。
GO语言变量的初始化和变量赋值是不同的概念,注意区分。
四、GO语言的条件控制语句
package main
import "fmt"
func main() {
a := 3
b := 2
if a, c := 2, 5; a < b &&
b == 2 {
fmt.Println("a<b")
fmt.Println(a)
fmt.Println(c)
}else {
fmt.Println("a>b")
fmt.Println(a)
fmt.Println(c)
}
fmt.Println(a)
}
/*
output:
a>b
2
5
3
*/
在GO语言的条件语句中,可以有一次变量的
赋值或者声明初始化语句,之后分号结束。
在if-else if-else语句块中,其中的变量属于同一作用域,出了该作用域其内定义的变量将失效。
五、GO语言的循环语句
GO语言循环中只支持for关键字,基本用法与C和C++中非常接近:
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
for后面的条件表达式不需要用括号包起来,GO语言还支持for 语言的无线循环场景:
for {
sum++
if sum > 100 {
break
}
}
在for的条件表达式中支持多重赋值:
a := []int{1, 2, 3, 4, 5, 6}
for i, j := 0, len(a) - 1; i < j; i, j = i + 1, j - 1 {
a[i], a[j] = a[j], a[i]
}
GO语言不支持在循环条件中以逗号为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多个变量。
GO语言的for循环同样支持continue和break来控制循环,但是它提供一个更高级的break,可以选择中断哪一个循环。
GO语言基础的更多相关文章
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...
- C#语言基础
第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了 ...
- C语言基础回顾
第一章 C语言基础 1. C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...
- 黑马程序员_ C语言基础(二)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概览 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): 1.Hello W ...
- C#语言基础— 输入与输出
C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...
- 【GoLang】GO语言系列--002.GO语言基础
002.GO语言基础 1 参考资料 1.1 http://www.cnblogs.com/vimsk/archive/2012/11/03/2736179.html 1.2 https://githu ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- Java学习总结(二)----Java语言基础
1. Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...
随机推荐
- 洛谷 P1896 互不侵犯King
P1896 [SCOI2005]互不侵犯King 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共 ...
- AngularJS中ng-options简单用法及预选项失败的原因
刚刚接触AngularJs,记录一下ng-options的使用. 1.构造key-value数据 $scope.types = [ {id:"1",type:"AA&qu ...
- 使用MSSM管理工具登录LOCALDB
调试程序没有安装 sql server时,可以使用localdb.这是一个简易的sql server数据库,用于本地测试是很方便,省去安装SQL SERVER的工作 电脑上安装了VS2013 VS20 ...
- FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令.服务器接收到命令后,会用其本地的FTP数据端口 ...
- Small factorials Solved Problem code: FCTRL2
import sys def fact(n): final = n while n > 1: final *= n - 1 n -= 1 return final #逻辑严谨,不要忘了retur ...
- Scala学习笔记--提取器unapply
提取器就是一个带有unapply方法的对象.你可以把unapply方法当做是伴生对象中apply方法的反向操作. apply方法接收构造参数,然后将他们变成对象. 而unapply方法接受一个对象,然 ...
- Jasper_table_pass parameter to table component
<subDataset name="Dataset1" uuid="2a894ef4-dbcc-47df-bfaf-027766c7352e"> 2 ...
- InnoSetup中枚举出INI文件的所有sections和键值
原文 http://blog.chinaunix.net/uid-23480430-id-3016899.html InnoSetup支持一些INI文件操作函数, 例如GetIniString,Ini ...
- 安装ArchLinux的参考分区方案
其实就是从Archwiki上搬运过来的 = =. 分区方案 虽然有一些关于分区方案的通用建议,但没有严格的准则.有许多影响分区方案的因素,例如对灵活性的期望,访问速度,安全性以及可用磁盘空间的硬性限制 ...
- Android 有缓存功能的请求封装接口
/* * @Company 浙 江 鸿 程 计 算 机 系 统 有 限 公 司 * @URL http://www.zjhcsoft.com * @Address 杭州滨江区伟业路1号 * @Emai ...