parent
f35518a573
commit
ad8d5d9b79
@ -0,0 +1,28 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main(){
|
||||||
|
// 方式一
|
||||||
|
var m map[int]string // 声明一个map
|
||||||
|
fmt.Println(m)
|
||||||
|
m = map[int]string{} // 初始化一个map
|
||||||
|
fmt.Println(m)
|
||||||
|
|
||||||
|
// 方式二
|
||||||
|
var m2 map[int]string = map[int]string{}
|
||||||
|
fmt.Println(m2)
|
||||||
|
|
||||||
|
// 方式三
|
||||||
|
m3 := map[int]string{}
|
||||||
|
fmt.Println(m3)
|
||||||
|
|
||||||
|
// 设置、获取、删除
|
||||||
|
m3[1] = "Tinywan"
|
||||||
|
a := m3[1]
|
||||||
|
fmt.Println(m3) // map[1:Tinywan]
|
||||||
|
fmt.Println(a) // Tinywan
|
||||||
|
|
||||||
|
delete(m3,1) // 删除一个map
|
||||||
|
fmt.Println(m3) // map[]
|
||||||
|
}
|
@ -0,0 +1,130 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
const (
|
||||||
|
MethodGet = "GET"
|
||||||
|
MethodHead = "HEAD"
|
||||||
|
MethodPost = "POST"
|
||||||
|
MethodPut = "PUT"
|
||||||
|
MethodPatch = "PATCH" // RFC 5789
|
||||||
|
MethodDelete = "DELETE"
|
||||||
|
MethodConnect = "CONNECT"
|
||||||
|
MethodOptions = "OPTIONS"
|
||||||
|
MethodTrace = "TRACE"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Person struct {
|
||||||
|
Name string
|
||||||
|
Age int
|
||||||
|
Contact struct {
|
||||||
|
Phone, City string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 组合的使用,嵌入结构的使用,被嵌入的结构体相当于把自己所有属性给予了需要嵌入的结构体中
|
||||||
|
type Hourman struct {
|
||||||
|
Sex int
|
||||||
|
}
|
||||||
|
|
||||||
|
type Teacher struct {
|
||||||
|
Hourman // 继承 Hourman 所有
|
||||||
|
Name string
|
||||||
|
Age int
|
||||||
|
}
|
||||||
|
|
||||||
|
type Student struct {
|
||||||
|
Hourman // 继承 Hourman 所有
|
||||||
|
Name string
|
||||||
|
Age int
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
sr1 := Person{}
|
||||||
|
fmt.Println(sr1)
|
||||||
|
|
||||||
|
sr2 := Person{}
|
||||||
|
sr2.Name = "Tinywan"
|
||||||
|
sr2.Age = 24
|
||||||
|
fmt.Println(sr2)
|
||||||
|
|
||||||
|
sr3 := Person{
|
||||||
|
Name: "Tinywan Default",
|
||||||
|
Age: 25,
|
||||||
|
}
|
||||||
|
fmt.Println(sr3) // {Tinywan Default 25}
|
||||||
|
A(sr3) // 传递值 {A Tinywan 25}
|
||||||
|
fmt.Println(sr3) // {Tinywan Default 25}
|
||||||
|
|
||||||
|
//传递指针
|
||||||
|
sr4 := Person{
|
||||||
|
Name: "Tinywan Default",
|
||||||
|
Age: 25,
|
||||||
|
}
|
||||||
|
fmt.Println(sr4) // {Tinywan Default 25}
|
||||||
|
B(&sr4) // 传递地址 &{Pointer B 25}
|
||||||
|
fmt.Println(sr4) // {Pointer B 25}
|
||||||
|
|
||||||
|
// 一般在结构体初始化的时候进行【取地址符号】,这时候被赋值的变量将会直接指向结构体的【指针】
|
||||||
|
// 【推荐改写法】
|
||||||
|
sr5 := &Person{ // 这里直接取地址
|
||||||
|
Name: "Default",
|
||||||
|
Age: 24,
|
||||||
|
}
|
||||||
|
fmt.Println("Update Before :", sr5)
|
||||||
|
sr5.Name = "Update"
|
||||||
|
B(sr5)
|
||||||
|
C(sr5)
|
||||||
|
fmt.Println("Update After :", sr5)
|
||||||
|
|
||||||
|
// 匿名
|
||||||
|
sr6 := &struct {
|
||||||
|
Name string
|
||||||
|
Age int
|
||||||
|
}{
|
||||||
|
Name: "nothing",
|
||||||
|
Age: 26,
|
||||||
|
}
|
||||||
|
fmt.Println("%v %p", sr6, sr6)
|
||||||
|
|
||||||
|
//匿名结构使用
|
||||||
|
sr7 := Person{Name: "Name01", Age: 24}
|
||||||
|
sr7.Contact.Phone = "13669361192"
|
||||||
|
sr7.Contact.City = "GanSu"
|
||||||
|
fmt.Println(sr7)
|
||||||
|
|
||||||
|
// 赋值操作
|
||||||
|
sr8 := Person{Name: "Name008", Age: 26}
|
||||||
|
var b Person // 这里必须声明为为Person的类型
|
||||||
|
b = sr8
|
||||||
|
fmt.Println(sr8) // {Name008 26 { }}
|
||||||
|
fmt.Println(b) // {Name008 26 { }}
|
||||||
|
|
||||||
|
// 嵌入和组合的使用
|
||||||
|
te := Teacher{Name:"Student Teacher", Age:48, Hourman: Hourman{Sex: 1}} //初始化操作
|
||||||
|
st := Student{Name:"Wan Student", Age:24, Hourman: Hourman{Sex: 2}}
|
||||||
|
// update
|
||||||
|
te.Name = "2018 Name"
|
||||||
|
te.Age = 12
|
||||||
|
te.Sex = 0
|
||||||
|
fmt.Println(te,st) // {{0} 2018 Name 12} {{2} Wan Student 24}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 传值引用
|
||||||
|
func A(person Person) {
|
||||||
|
person.Name = "A Tinywan"
|
||||||
|
fmt.Println(person) // {A Tinywan 25}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
func B(person *Person) {
|
||||||
|
person.Name = "Pointer B "
|
||||||
|
fmt.Println(person)
|
||||||
|
}
|
||||||
|
|
||||||
|
func C(person *Person) {
|
||||||
|
person.Name = "Pointer C "
|
||||||
|
fmt.Println(person)
|
||||||
|
}
|
Loading…
Reference in new issue