2018年6月30日
基础命令
- go build 用于编译源码文件、代码包、依赖包
可执行文件路径为
$GOPATH/bin
- go run 编译并运行go源码文件
- go get 动态获取远程代码包
系统关键字或保留字
1,保留关键字
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
2, 预定的标识符,包括基础数据类型和系统内嵌函数。
append | bool | byte | cap | close | complex |
complex64 | complex128 | uint16 | copy | false | float32 |
float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new |
nil | panic | uint64 | println | real | |
recover | string | true | uint | uint8 | uintprt |
3,内嵌数据类型
-
Boolean类型:
系统为此类型定义了两个常量:true 和 false.
初始默认值为:false。
格式化输出时的格式字符串为:%t。
-
实例代码:
-
输出结果为:
- flag1 = true
- !flag1 = false
- GlobalFlag = true
- (flag1 && flag2) = false
- (flag1 || flag2) = true
-
Byte类型:
- 为uint8的别外,即只有8个bit。
-
数字类型:
- 整数类型:
有符号整数:int8, int16, int32, int64和int(此类型会根据特定的平台可能会有所不同)
无符号整数:uint8, uint16, uint32, uint64和uint (此类型会根据特定的平台可能会有所不同)
初始默认值为:0。
格式化输出时的格式字符串为:%d,输出16进制:%x或%X;8进制:%o。
-
实例代码:
-
输出结果为:
i8=9, i=27, ui32=30, ui64=40, defInt=0
i8=11, i=1b, ui32=1E, ui64=101000
The value=27, The Address=0x117d0238
- 浮点类型:float32 和 float64
初始默认值为:0.0。
注意:这里没有float的类型,且两个浮点数比较时不能使用== 和 !=
格式化输出时的格式字符串为:%g,%f则对应浮点类型的指针;%e则对应科学计数法办输出;%n.mg用于指定小数位输出。
-
实例代码:
-
输出结果:
- f32 = 2.054545, f64=4.054544925689697, default=0
- f32 = 2.05
- 复数类型:
complex64:实数与虚数都是32位
complex128: 实数与虚数都是64位
real(c):获取实数部分
imag(c):获取虚数部分
格式化输出时的格式字符串为:%v, 另外也可以使用%f输出实部和虚部。
-
实例代码:
-
输出结果:
- The com1=(2+3i), The com2=(3+4i)
- The com2=(5+7i)
- The real of com2=5, The imag of com2=7
- 整数类型:
-
字符类型:
- 严格的说,在Go中没有此类型类型,它是特殊的整数类型。
- 它对应uint8类型,对传统的ASCII码对应,占1byte。
- 同时也支持Unicode(UTF-8)的编码,所以它可能点多个byte,被称为Unicode code points或runes。此时它对应的int32的数字类型。
- 包含在单引号中。
- Unicode的字符通常以16进制的形式表示(\u+4或\U+8)
- 格式化输出时的格式字符串为:%c;%v或%d则显示对应的整数值;%U则输出:U+hhhh
-
字符串类型:
- 一串UTF-8编码格式的字符(可能占1~4byte)---- Java中的字符都是占2bytes。
- 包含在双引号中,只能在独立的一行内。(Interpreted string)
- 包含在反引号中,可以跨越多行。(raw string)
- 注:Go所有的代码都是UTF-8格式,所以不存在对字符进行编码和解码。
- 它是不可变的值类型,所以不能直接修改字符串。
-
指针类型:
- 占4byte大小。
- 各种数据类型都有对应的指针类型。
- 声明方法类似于C中对指针的声明: *type。
4 操作符
- 逻辑运算符:
- 与:&&,或:||,非:!。
- ==,!=,<,>,<=,>=
- 位运算符:
- 只能工作在int类型的变量上。
- 按位与:&,按位或:|,按位异或:^
- 左移:<<,右移:>>。(空位补0)
- 算术运算符:
- +,-,*,/。
- 取模:%
- 简化操作:-=,*=, +=, %=
- ++, --。(只能在数字变量的后面,不能放在开头,这是与C,Java不一样的地方)。
- 优先级:(7 -> 1:由高到低)
全局变量
在func 之外
局部变量
在func之内
源码文件模板
package main
// 程序所属包
import "fmt"
//导入依赖包
const NAME string = "SoulMO"
//定义常量
var a string = "Golang学习"
//声明全局变量及赋值
type GoLearntInt int
//一般类型声明
type Learn struct{
}
//结构体声明
type ILearn interface {
}
//声明接口
func GoLearn() {
fmt.Println(a,"learn Golang")
}
//定义函数
func main() {
GoLearn();
fmt.Println(a,"Hello ~")
}
// main函数
基础语法
1, package
- package 是最基本的分发单位和工程管理中依赖关系的体现
- 每个GoLang源代码文件开头都拥有一个package 声明,表示源代码文件所属代码包
- 生成GoLang可执行程序,必须要有main的package包,且改包下必须有main()
- 同一路径下只能存在一个package,一个package可以由多个源代码文件组成
package 包名为当前文件夹名,避免混淆
2,import
- import根据顺序导入
函数名必须大写开头
3类型零值
值类型 默认为 0
布尔类型 默认为 false
string 默认为 空字符串
3,参数声明初始化及赋值
变量声明格式
var <变量名称> [变量类型]
变量赋值格式
<变量名称> = <值,表达式,函数等>
变量声明并赋值格式
var <变量名称> [变量类型] = <值,表达式,函数等>
分组声明格式
var(
i int
j float32
name string
)
单行 声明多个变量和赋值
var a, b, c int = 1, 2, 3
或者a, b := 1, 2
全局变量声明必须用var,局部变量可省略
特殊变量 下划线“_”;
若将值赋给 “_” 则代表 值被销毁,接下来的操作将无法调用该值
go类型转换必须是显式的
类型转换只能发生在两种兼容类型之间
类型转换格式 <变量名称> [:]= <目标类型>
变量为大写字母开头的 是公用变量,可被其他包读取调用
变量为小写字母开头的 为私有变量,只能被当前包使用
有疑问加站长微信联系(非本文作者)