一、概述
Go是Google开发的一种静态强类型,编译型,并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go语言,于2009年11月正式宣布成为开放源代码
1、学习推荐
2、安装window
下载到合适的安装路径(msi,点此),配置GOPATH、GOROOT、GOBIN环境变量
安装完成之后打开 cmd ,输入go version 成功输出版本号则代表安装成功
GOROOT:Go的安装路径
GOPATH:允许多个目录,当有多个目录时,请注意分隔符,
Windows是分号“;”,
Linux系统是冒号“: ”
注意:
$GOPATH目录约定有三个子目录
src:存放源代码(比如:.go .c .h .s等)
pkg:编译时生成的中间文件(比如:.a)
bin:编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中,
如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录)
GOBIN:Go文件中的bin目录
3、开发工具
比较流行的开发工具有:Sublime、VS Code、LiteIDE、GoLand(收费)官网
新建helloworld.go 文件(路径:C:\go\workspace\src\helloworld.go)
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
$>cd C:\go\workspace\src\
$>go run helloworld.go
hello,world
注意
package 必须是有效代码的第一行
main包 只能有一个
import 导入的包,必须是被使用的
main 函数 在 main 包 只能有一个,并且肯定要有一个
二.问答
1.main包 所在文件必须叫 main.go 吗 ?
答案:不是
2.main包 可以写多个 .go 文件吗 ?
答案:可以
3.同目录 可以有多个包名吗 ?
答案:可以,但不可以同时编译
4.自定义包 应该如何规划目录?
答案:最好是将同一个包的不同文件(.go)放在同一个目录,目录名建议以包名命名
5.自定义包 如何导入 main.go 中使用?
答案:自定义包需要添加相对路径,如:”./pkg_1”,之后通过pkg_1.方法 / 属性
6.自定义包 可以有 Main 函数吗 ?
答案:可以,完全不受影响
7.自定义包 如何区分公共成员与私有成员 ?
答案:大写字母开头公共,其他私有
8.main包 分成多个.go文件 如何运行 ?
答案:windows 上 go run main_part1.go main_part2.go ... 有多少写多少,
linux 上 go run *.go
二、 支持类型
1、基础类型
- 布尔型 bool
- 整形 int8, byte, int16, int, uint, uintptr
- 浮点类型: float32 (c中的float ), float64 ( c中的double )
- 复数类型: complex64, complex128(go中特有的)
- 字符串: string (内置类型)
- 字符类型: rune(Unicode字符类型), byte(UTF-8字符类型)
- 错误类型: error
- 字符 : char
2、复合类型
- 指针: pointer 数组: array 切片: alice
- 字典: map
- 通道: chan
- 结构体: struct
- 接口: interface
三、Go优缺点及用途
1、go的优点
A、可直接编译成机器码
B、丰富的标准库支持
C、内置强大的工具
D、支持跨平台编译
E、支持自动垃圾回收
F、更丰富的内置类型支持
G、支持函数多返回值
H、错误处理支持
I、支持匿名函数和闭包
J、支持类型和接口
L、支持并发编程
M、支持反射
N、支持与C语言交互
2、go的缺点
Go语言缺点如下:缺少框架;软件包管理不完善。
3、go的用途
Go语言主要用途如下:
A、服务器编程,如处理日志、数据打包、虚拟机处理、文件系统等
B、分布式系统,数据库代理器等
C、网络编程,如Web应用、API应用、下载应用
D、内存数据库,如groupcache、couchbase的部分组建
E、云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,
前VMare的技术总监自己出来搞的apcera云平台。
四、参考