虽然代码我看懂了,比较好理解,但我还是写下笔记和代码,加深下理解。
声明一个结构体
type data struct {
ID int
Name string
Address string
MyList [...]types.Slice
DoB time.Time
}
看下 struct 就是结构体的意思, 前方用type修饰, data是结构体名称。
结构体内只能声明变量或函数或方法名, 不能赋值。
看下面代码
type data struct {
ID int
Name string
Address string
// 切片 我记错了 [] 是切片 [...] 是数组
MyList []string
DoB time.Time
//MyArray [...]string
}
func main() {
var d data
d.Address = "华东区\n"
fmt.Printf(d.Address)
fmt.Printf("%v \n", d.DoB)
d.MyList = []string{"a","b", "c"}
fmt.Printf("%v \n",d.MyList)
fmt.Printf("%T \t", d.MyList)
p := [...]string{"a", "b", "c", "d"}
fmt.Printf("%v", p)
}
[]是切片,[...] 这个是数组, 由于数组长度一旦声明不可变, 所以结构体里能放切片不能放数组。 因为结构体不能初始化值, 而数组声明时必须指定长度。
匿名函数的用法, 看代码
import "fmt"
// 一个词一个词解释
// func 证明是函数或方法
//add() 函数名
// func() int 复杂了, 就这 返回一个函数, 此函数返回int类型
func add() func() int{
var i int
return func () int {
i++
return i
}
}
func main() {
p := add()
fmt.Printf("%v \n", p())
fmt.Printf("%v \n", p())
fmt.Printf("%v \n", p())
fmt.Printf("%v \n", p())
}
// 返回1,2,3,4
意义:大的方法名add 付给p, 而调用 p(), 只用到了匿名函数, 初始化i并没有起作用。