给 Java 程序员写的 Go 语言入门

本文是为Java程序员准备的Go语言入门教程,涵盖环境配置、语法特性、数据结构、错误处理和并发编程。从GOROOT和GOPATH的设置到Go语言的关键概念如包、变量、流程控制和函数,再到面向对象和错误处理,最后深入探讨Go的并发机制,包括协程和管道。
摘要由CSDN通过智能技术生成

Go,又称 golang,是 Google 开发的一种静态强类型、编译型,并发型,并具有垃圾回收功能的编程语言。

罗伯特·格瑞史莫、罗勃·派克及肯·汤普逊于 2007 年 9 月开始设计 Go 语言,于 2009 年 11 月正式宣布推出,成为开放源代码项目。

1. 环境

1.1. GOROOT和GOPATH

  • GOROOT:Go 的安装路径;
  • GOPATH:Go 的工作路径,类比 Java 中的 CLASSPATH。GOPATH 可以有多个,Windows-based OS 以分号分隔;Unix-based OS 以冒号分隔。

注: GOROOT 不能和 GOPATH 相同。

设置 PATH = $GOROOT/bin:$GOPATH/bin:$PATH 方便直接运行程序。

1.2. 目录结构

GOPATH 下包含三个目录:binpkg 和 src

  • bin:存放编译后的可执行文件;
  • pkg:存放引用的包(package),类比 Java CLASSPATH 引用的第三方库;
  • src:存放源代码。

一般的工程目录为 $GOPATH/src/github.com/<github_username>/<project_name>

1.3. Go 命令行

go build   // 编译源代码,编译后的目标文件放在 pkg 目录下
go run     // 编译源代码,并从入口函数执行程序
go install // 从入口函数程序编译代码,编译后的可执行程序放在 bin 目录下

1.4. 测试程序

源文件后加 _test 的文件是此代码的单体测试代码。例如,string.go 的单体测试程序是 string_test.go

使用 go test 运行测试程序。

1.5. 开发IDE

2. 语法

2.1. 语言结构

2.1.1. 包

Go 语言由包(package)组成。Go 语言中的包类比 Java 中的 类(class)。

首字母大写的名称被导出包。 类比 Java 中的 public 方法和 public 类的成员变量。

程序运行的入口是 package main

// 写法一
import "fmt"
import "math"

// 写法二
import (
    "fmt"
    "math"
)

2.1.2. 语句

Go 语言语句后可以用分号结尾,也可以不用分号结尾。

2.1.3. 注释

C 风格,和 Java 相同。

2.1.4. 运算符

C 风格,和 Java 相同。

2.2. 变量

2.2.1. 数据类型

基本数据类型有布尔(bool)、数字(int, float, …)和字符串(string)三种。

数字类型又包含 uint, uint8(byte), uint16, uint32, uint64, int, int8, int16, int32(rune), int64, float, float32, float64, complex64, complex128, uintptr等。

衍生类型又包括 指针(pointer)、数组(array)、结构体(struct)、联合体(union)、函数(func)、切片(slice)、接口(interface)、管道(channel)等。

Go 语言需要显式转换变量类型。

aaa := 42
bbb := float64(aaa)
ccc := uint(bbb)

2.2.2. 声明变量

使用 var 声明变量,类型写在变量名后面。

当声明多个变量连续为同一类型时,除最后一个类型外,其他可以省略。

var aaa, bbb, ccc bool

// 另一种写法
var (
    aaa bool
    bbb bool
    ccc bool
)

变量可以定义在包级别(函数外部)和函数级别。类比 Java 中类的成员变量和方法内部的局部变量。

2.2.3. 初始化变量

声明变量时,可以初始化变量。每个变量依次对应一个值。

初始化变量不指定类型时,变量从初始值中获得类型。

var i, j int = 1, 2
var aaa, bbb, ccc = true, 0, "no!"

在函数内部,使用 := 初始化变量时,可以省略 var。在函数外部不可省略。

aaa, bbb, ccc := true, 0, "no!"

变量没有初始化,系统自动赋零值。数值的零值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值