go语言基础
Go语言基础
go语言由google开发,对分布式系统开发友好
安装与设置
- 从Go官网下载并安装Go。
- 配置环境变量:
- 设置
GOPATH(工作区路径)。 - 将
GOBIN添加到系统的PATH中。
- 设置
基本语法
首先进行一个基础的hello world程序编写
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
go语言基础组成包括包声明、引入包、函数、变量、语句和表达式、注释
数据类型
- 基本类型:整型
int, 浮点数float64,float32,字符串类型string, 布尔类型bool - 复合类型:数组类型
array, 切片类型slice,map,struct
变量声明
// var identifier type
var name string = "Go语言"
var name, name2 string //同时声明两个变量,如果无显示初始化,则会默认初始化为空字符串
// 其它类型默认初始化为nil
var p *int // 指针
var s []int // 切片
var m map[int] int // 映射
var ch chan int // 通道
var f func() int // 函数
var i interface{} // 接口
// 根据值自动判断类型
var i = 3
// 也可以简短声明
i := 3 // 但是需要注意如果已经被声明,此时再声明是不允许的,只能在函数体中允许使用
// 等价于var i int i = 3
var ( // 用于声明全局变量
a int = 5
b bool = True
)
常量声明
const identifier [type] = value
const (
a = iota // 特殊常量,可以被编译器修改的常量,会被初始化为0
b // 1
c // 2
)
控制结构
if condition {
// 条件为真时执行
} else {
// 条件为假时执行
}
for i := 0; i < 10; i++ {
fmt.Println(i)
}
for ture {
// 无限循环
}
函数
func add(a int, b int) int {
return a + b
}
并发
Go语言内置支持并发,通过goroutine和channel实现。
go func() { // go 声明协程
fmt.Println("并发执行")
}()
ch := make(chan int)
ch <- 42 // <-声明通道
fmt.Println(<-ch)
go接收者
go接收者可以用来实现类似类的功能,go语言中没有类的概念,简单来讲接收者其实就是我要使用的东西或者我要改的东西,就可以用作接收者。比如方法是雕刻,那么石头就是接收者,雕刻要雕石头。
func (r ReceiverType) 方法名(参数) 返回值 {
// 可通过r访问接收者的字段/方法
}
// ReceiverType必须是当前包定义的类型,不能是内置类型int
// 例子
type Coffe struct { temp float64}
func (c Coffe) heat() { c.temp += 10 }
func (c *Coffe) heat() { c.temp += 10 }
c Coffe // 值接收者,适用于不需要修改源数据,且数据较少时
c *Coffe // 指针接收者,适用于需要修改源数据,且数据较多时
go语言模式匹配
go语言中ok模式匹配中可以用来检查键值是否存在,如果键值存在,则ok为true, 否则为false,_代表不获取键对应的值,忽略返回值
_, ok := myMap[key]
if ok {
fmt.Println("键存在,值为:")
} else {
fmt.Println("键不存在")
}

浙公网安备 33010602011771号