数组定义【定义后长度不可变】
1 | symbol := [...]string{USD: "$", EUR: "€", GBP: "£", RMB: "¥"} |
指针数组
1 | var array3 [5]*int |
切片在底层维护一个可以动态扩展的数组,切片这一数据结构包含三个元素,指针、长度、容量【所以切片是引用类型】
1 | source := make([]string, 3, 5) // 访问长度3个元素,底层数组拥有5个元素,不允许创建容量小于长度的切片 |
切片、字符串互相转换
1 | source := make([]string, 10) |
中间插入元素
1 | a := []int{1, 2, 3, 4, 5} |
原地删除
1 | // 原地删除,公用底层数组 |
slice作为参数
1 | // more本质上就是slice类型 |
基本操作
1 | dict := make(map[string]int) |
map类型也是引用类型,所以如果作为参数传到函数中修改,会改变变量本身
struct不是引用类型,改变自身需要传指针
继承
1 | type Point struct { |
interface是一组method的组合,可以通过interface来定义对象的一组行为。如果某个对象实现了某个接口的所有方法,则此对象就实现了此接口。
如果我们定义了一个interface的变量,那么这个变量里面可以存实现这个interface的任意类型的对象。
类型断言,判断一个interface是否是该类型
1 | package main |
使用switch来简化代码【element.(type)】不能在switch外的任何逻辑里面使用
1 | package main |
interface也可以向struct一样内嵌
原文:https://www.cnblogs.com/lijianming180/p/12251564.html