go基础(2)
本文已参与周末学习计划,点击链接查看详情:juejin.cn/post/696572…
数组
声明数组 数组长度固定
var arrayList [10] int // 声明长度为10的数组
// 初始化
arrList := [10]int{1,2,3,4} // 初始化一个长度为10的数组
// 不确定长度
arrList := [...]int{} // 使用...代替长度 编译器自动推断
// 指定索引初始化
arrList := [5]int{1:100, 3:100} // 将索引为1 和 3的元素初始化
/*
{} 中的元素个数不能超过指定的长度
*/
// 访问数组元素通过下标访问
arrList[0]
多维数组
var arrList [10][5]int
var arrList [][]int
row1 := []int{1,2,3}
row2 := []int{4,5,6}
arrList = append(arrList, row1)
arrList = append(arrList, row1)
// 初始化
arr := [5][5] {
{0,1,2,3}
}
go指针
& 取地址
func main() {
var a int = 10
fmt.Printf(&a) //20818a220
}
声明指针
var i int = 10
var fp * float32
fp = &i // 指针变量的存储地址
fmt.Printf(*fp) // 通过指针变量取值
nil 空指针
var ptr *int
if(ptr == nil)
if(ptr != nil)
// 指针数组
var ptr [3]*int
// 指针变量的指针变量
var a int = 300
var ptr *int
var pptr **int
ptr = &a
pptr = &ptr
fmt.Printf(a, *ptr, **pptr)
// 函数传参为指针
func swap(x *int, y*int) {
}
func main() {
var a int = 100
var b int = 200
swap(&a, &b)
}
go结构体
结构体定义格式
type structName struct {
name Type
}
// 实例
type Books struct {
title string
author stirng
}
func main() {
var book1 Books
book1.title = "go"
book1.author = "123"
}
go切片(slice)
数组长度是固定的 切片长度不固定,可以追加元素
定义切片
1 var name []type
2 var name []type = make([]type, len)
简写 name := make([]type, len)
// 初始化
s := [] int {1,2,3} // 直接初始化切片
s := arr[:] // 初始化切片 是数组arr的引用
s := arr[1:3] // 从arr中 arr[1] 到 arr[3-1]的元素创建一个切片
s := arr[2:] // arr[2]往后
s := arr[:5] // arr[5-1]往前
s := make([]int, len, cap)
// 空切片
var num []int
if(num == nil) {
fmt.Printf(true)
}
向切片追加元素
var num = []int
nums = append(num, 0,1,2)
go Map
map 是一种无序的键值对集合
定义
1 声明变量的方式
var mapName map[keyType]valueType
var cMap = map[string]string{"title": "go", "type": "go"}
2 通过make创建
var mapName = make(map[keyType]valueType)
var cMap = make(map[string]string)
cMap["title"] = "go"
cMap["type"] = "go"
删除map中的元素
delete(cMap, "title")
接口
格式
type interfaceName interface {
name [returnType]
}
// 定义接口
type Animal interface {
eat()
}
// 定义结构体
type Dog struct {
}
// 定义结构体
type Cat struct {
}
// 实现接口方法
func (dog Dog) eat() {
fmt.Println("dog eat")
}
// 实现接口方法
func (cat Cat) eat() {
fmt.Println("Cat eat")
}
func main() {
var animal Animal
animal = new(Dog)
animal.eat()
animal = new(Cat)
animal.eat()
}
go 错误处理
error 是一个接口类型
type error interface{
Error() string
}
func Sqrt(f float64) (float64, error) {
if f < 0 {
return 0, errors.New("math: square root of negative number")
}
// 实现
}