1w字---》技能点,项目
自我介绍 5--6分钟(你的个人介绍,以及一个项目的详细介绍)
面试套路,不会的问题作何反应,面试最后的收尾
五险一金
1 字符串
-utf-8
-字节长度(len),字符长度(utf8包下)
-for循环迭代循环(字符),索引循环(字节)
2 指针
-& 放在变量前,表示取该变量的地址
-* 放在变量前,表示解引用
-* 放在类型前,表示指向这个类型的指针
-零值:nil
-向函数传递指针参数
-(*a)
-不支持指针运算
-数组指针,指针数组
3 结构体:一系列属性(字段)的集合
-结构: type 名字 struct{
属性1 类型
属性2 类型
}
-匿名结构体:type 名字都省略
-用在内部,只使用一次
-结构体零值:值类型,当作参数传递,修改不会影响原来的
-访问结构体字段:通过 .
-导出字段:首字母是否是大写
-结构体指针
-匿名字段:字段没有名字,类型名就是字段名----》提升字段
-结构体嵌套:结构体中套结构体(有名结构体,匿名结构体)
-如果嵌套的结构体是匿名,这个结构体的字段会被提升:
-结构体嵌套类似于---继承
-结构体相等性:所有字段可比较,结构体才可以比较
1 方法
1 函数和方法
2 方法有特殊之处:绑定给谁,谁来调用,会把调用者自动传入
3 go中如何写方法
-方法其实就是一个函数,在 func 这个关键字和方法名中间加入了一个特殊的接收器类型。
-接收器可以是结构体类型或者是非结构体类型。
-接收器是可以在方法的内部访问的
package main
import "fmt"
// 方法
//type Address struct {
// province string
// city string
//}
//
//func (a Address)printAddr() {
// fmt.Println("省是:",a.province,"市是:",a.city)
//}
//
//type Person struct {
// name string
// age int
// Address // 匿名字段 结构体嵌套
//
//}
//// 方法,方法是绑定给Person这个结构体的
//// 值类型接收器
//func (p Person) changName(name string) {
// p.name=name
// fmt.Println(p)
//}
//func (p Person)printAddr() {
// p.Address.printAddr()
// fmt.Println("Person的省是:",p.Address.province,"市是:",p.Address.city)
//}
//// 指针类型接收器
//func (p *Person) changAge(age int) {
// p.age=age
//}
//
//// 普通函数
//func changName(p Person) {
// fmt.Println("名字被改了")
// fmt.Println(p)
//}
// 6 在方法中使用值接收器 与 在函数中使用值参数 在方法中使用指针接收器 与 在函数中使用指针参数
type Person struct {
name string
age int
}
//方法中使用值接收器
func (p Person)changeName(name string) {
p.name=name
}
// 在函数中使用值参数
func changeName(p Person,name string) {
p.name=name
}
//方法中使用指针收器
func (p *Person)changeAge(age int) {
p.age=age
}
// 在函数中使用指针
func changeAge(p *Person,age int) {
p.age=age
}
// 7 非结构体的方法(把原来的类型,重命名)
type MyInt int
func (i *MyInt)Add(){
(*i)++
}
func main() {
//1 方法的使用
//p:=Person{"lqz",19}
//p.changName() //自动传值
//2 为什么有了函数还用方法
//changName(p) // 调用函数
//p.changName() //调用方法
//3 指针接收器与值接收器