parent
e38ee114cb
commit
6e253612ea
@ -0,0 +1,24 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
type student struct {
|
||||||
|
name string
|
||||||
|
age int
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
m := make(map[string]*student)
|
||||||
|
stus := []student{
|
||||||
|
{name: "小王子", age: 18},
|
||||||
|
{name: "娜扎", age: 23},
|
||||||
|
{name: "大王八", age: 9000},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, stu := range stus {
|
||||||
|
m[stu.name] = &stu
|
||||||
|
}
|
||||||
|
for k, v := range m {
|
||||||
|
fmt.Println(k, "=>", v.name)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,64 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
使用“面向对象”的思维方式编写一个学生信息管理系统。
|
||||||
|
学生有id、姓名、年龄、分数等信息
|
||||||
|
程序提供展示学生列表、添加学生、编辑学生信息、删除学生等功能
|
||||||
|
*/
|
||||||
|
|
||||||
|
type ExStudent struct {
|
||||||
|
ID, Age, Score, Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var str string
|
||||||
|
exStuArr := make([]ExStudent, 0, 20)
|
||||||
|
in := bufio.NewScanner(os.Stdin)
|
||||||
|
for true {
|
||||||
|
fmt.Println("=== 学生管理系统 ===")
|
||||||
|
fmt.Println("* 1. 展示学生 *")
|
||||||
|
fmt.Println("* 2. 添加学生 *")
|
||||||
|
fmt.Println("* 3. 编辑学生 *")
|
||||||
|
fmt.Println("* 4. 删除学生 *")
|
||||||
|
fmt.Println("====================")
|
||||||
|
fmt.Println("请输入编号:")
|
||||||
|
if in.Scan() {
|
||||||
|
str = in.Text()
|
||||||
|
}
|
||||||
|
switch str {
|
||||||
|
case "1":
|
||||||
|
for _, v := range exStuArr {
|
||||||
|
fmt.Printf("ID: %v\nName: %v\nAge: %v\nScore: %v\n", v.ID, v.Name, v.Age, v.Score)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case "2":
|
||||||
|
exStu := ExStudent{}
|
||||||
|
fmt.Println("请输入ID:")
|
||||||
|
if in.Scan() {
|
||||||
|
exStu.ID = in.Text()
|
||||||
|
}
|
||||||
|
fmt.Println("请输入Age:")
|
||||||
|
if in.Scan() {
|
||||||
|
exStu.Age = in.Text()
|
||||||
|
}
|
||||||
|
fmt.Println("请输入Name:")
|
||||||
|
if in.Scan() {
|
||||||
|
exStu.Name = in.Text()
|
||||||
|
}
|
||||||
|
fmt.Println("请输入Score:")
|
||||||
|
if in.Scan() {
|
||||||
|
exStu.Score = in.Text()
|
||||||
|
}
|
||||||
|
exStuArr = append(exStuArr, exStu)
|
||||||
|
for _, v := range exStuArr {
|
||||||
|
fmt.Printf("ID: %v\nName: %v\nAge: %v\nScore: %v\n", v.ID, v.Name, v.Age, v.Score)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Student struct {
|
||||||
|
ID int
|
||||||
|
Gender string
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
type Class struct {
|
||||||
|
Title string
|
||||||
|
Student []*Student
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
c := &Class{
|
||||||
|
Title: "101",
|
||||||
|
Student: make([]*Student, 0, 200),
|
||||||
|
}
|
||||||
|
for i := 0; i < 10; i++ {
|
||||||
|
stu := &Student{
|
||||||
|
ID: i,
|
||||||
|
Gender: "男",
|
||||||
|
Name: fmt.Sprintf("stu%02d", i),
|
||||||
|
}
|
||||||
|
c.Student = append(c.Student, stu)
|
||||||
|
}
|
||||||
|
//for _, v := range c.Student {
|
||||||
|
// fmt.Printf("%#v\n", v)
|
||||||
|
//}
|
||||||
|
data, err := json.Marshal(c)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("json marshal failed")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Printf("JSON:\n %s\n", data)
|
||||||
|
|
||||||
|
str := `{"Title":"101","Student":[{"ID":0,"Gender":"男","Name":"stu00"},{"ID":1,"Gender":"男","Name":"stu01"}]}`
|
||||||
|
c1 := &Class{}
|
||||||
|
err = json.Unmarshal([]byte(str), c1)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("json unmarshal failed")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, v := range c1.Student {
|
||||||
|
fmt.Printf("%#v\n", v)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
/*
|
||||||
|
struct是值类型
|
||||||
|
*/
|
||||||
|
|
||||||
|
// NewInt 类型定义
|
||||||
|
type NewInt int
|
||||||
|
|
||||||
|
// MyInt 类型别名
|
||||||
|
type MyInt = int
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var a NewInt
|
||||||
|
var b MyInt
|
||||||
|
|
||||||
|
fmt.Printf("a: %T, b: %T\n", a, b)
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
type person struct {
|
||||||
|
city, name string
|
||||||
|
age int
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
//基本实例化
|
||||||
|
var p1 person //没有初始化的结构体,其成员变量都是对应其类型的零值。
|
||||||
|
p1.age = 10
|
||||||
|
p1.city = "anhui"
|
||||||
|
p1.name = "ld"
|
||||||
|
|
||||||
|
//匿名结构体
|
||||||
|
var user struct {
|
||||||
|
name string
|
||||||
|
age int
|
||||||
|
}
|
||||||
|
user.age = 10
|
||||||
|
user.name = "username"
|
||||||
|
fmt.Println(p1, user)
|
||||||
|
|
||||||
|
//创建指针类型结构体
|
||||||
|
var p2 = new(person)
|
||||||
|
fmt.Printf("p2: %T\n", p2)
|
||||||
|
fmt.Printf("p2: %#v\n", p2)
|
||||||
|
|
||||||
|
//取结构体地址的实例化
|
||||||
|
p3 := &person{}
|
||||||
|
fmt.Printf("p3: %T\n", p3)
|
||||||
|
fmt.Printf("p3: %#v\n", p3)
|
||||||
|
p3.age = 18 //本质在底层是执行的 (*p3).age = 18
|
||||||
|
p3.city = "beijing"
|
||||||
|
p3.name = "zhang san"
|
||||||
|
fmt.Printf("p3: %#v\n", p3)
|
||||||
|
|
||||||
|
p4 := newPerson("p4", "suzhou", 22)
|
||||||
|
fmt.Printf("p4: %#v\n", p4)
|
||||||
|
}
|
||||||
|
|
||||||
|
func newPerson(name, city string, age int) *person {
|
||||||
|
return &person{
|
||||||
|
city: city,
|
||||||
|
name: name,
|
||||||
|
age: age,
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
// Person2 匿名结构体
|
||||||
|
type Person2 struct {
|
||||||
|
string
|
||||||
|
int
|
||||||
|
}
|
||||||
|
|
||||||
|
// Address 嵌套结构体
|
||||||
|
type Address struct {
|
||||||
|
Province, City string
|
||||||
|
}
|
||||||
|
type User struct {
|
||||||
|
Name string
|
||||||
|
Age int
|
||||||
|
Address
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
p1 := Person2{
|
||||||
|
"132",
|
||||||
|
18,
|
||||||
|
}
|
||||||
|
fmt.Printf("p1: %#v\n", p1)
|
||||||
|
user := User{
|
||||||
|
Name: "song",
|
||||||
|
Age: 18,
|
||||||
|
Address: Address{
|
||||||
|
Province: "anhui",
|
||||||
|
City: "An qing",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
fmt.Printf("%#v\n", user.City)
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
type Person3 struct {
|
||||||
|
name string
|
||||||
|
age int8
|
||||||
|
dreams []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Person3) SetDreams(dreams []string) {
|
||||||
|
//p.dreams = dreams
|
||||||
|
p.dreams = make([]string, len(dreams))
|
||||||
|
copy(p.dreams, dreams)
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
p1 := Person3{name: "小王子", age: 18}
|
||||||
|
data := []string{"吃饭", "睡觉", "打豆豆"}
|
||||||
|
p1.SetDreams(data)
|
||||||
|
|
||||||
|
// 你真的想要修改 p1.dreams 吗?
|
||||||
|
data[1] = "不睡觉"
|
||||||
|
fmt.Println(p1.dreams) // ?
|
||||||
|
}
|
Loading…
Reference in new issue