go基础入门(2)| 周末学习

171 阅读2分钟

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")
    }
    // 实现
}