递归函数
func sum(x int) int {
z:= x * 3
if(z < 100){
return sum(z)
}
return z
}
func main() {
fmt.Println(sum(5))
}
类型别名/自定义类型
//自定义类型
type int64 int
//类型别名
type int128 = int
func main() {
var a int64 = 65
fmt.Println(a)
fmt.Printf("%T \n",a)
var b int128 = 65
fmt.Println(b)
fmt.Printf("%T \n",b)
var c rune
c = 12
fmt.Println(c)
fmt.Printf("%T \n",c)
}
结构体
type person struct {
name string
age int
gender string
hobby []string
}
func main() {
var p person
p.name = ""
p.age = 12
p.hobby = []string{}
fmt.Printf("%#v\n",p)
//匿名结构体
var s struct{
x int
y string
}
s.x = 1
fmt.Printf("%#v\n",s)
}
结构体操作
type dog struct {
name string
}
func (d dog) dogs() {
fmt.Println(d.name)
}
type myint int
func (i myint) mynum() {
fmt.Println(i)
}
func main() {
d := dog{name:"狗"}
d.dogs()
i := myint(123)
i = 789
i.mynum()
}
嵌套
//嵌套
type A struct {
name string
}
type B struct {
age int
}
type C struct {
names A
B
}
func main() {
var p C
p.names.name = "ads"
p.age = 12
fmt.Printf("%v\n", p)
fmt.Printf("%#v\n", p)
d := C{names:A{name:"asd"},B:B{age:111}}
fmt.Printf("%v\n", d)
fmt.Printf("%#v\n", d)
}
结构体继承
type animal struct {
name string
}
func (a animal) move() {
fmt.Printf("%s 会动 \n",a.name)
}
type dog struct {
feet uint8
animal
}
func (d dog) wang() {
fmt.Printf("%s 会 汪汪汪~~~ \n",d.name)
}
func main() {
gou := dog{feet:111,animal:animal{name:"大狗"}}
gou.move()
gou.wang()
}
结构体与json
//结构体与json
//1. 序列化 结构体转为json
//2. 反序列化 json转go的结构体
type status struct {
Name string `json:"name"`
Age int `json:"age"`
Money float64 `json:"money"`
}
func main() {
j := status{
Name: "张三",
Age: 0,
Money: 0,
}
//返回的是字节
js,err := json.Marshal(j) ;if err!=nil{
fmt.Println("报错了")
}
//需要转一下
jsons :=string(js)
fmt.Println("json: ",jsons)
//反序列化
var p status
json.Unmarshal([]byte(jsons),&p)
fmt.Printf("%#v \n",p)
}
练习操作
package main
import "fmt"
type class struct {
id int
title string
}
type school struct {
cls map[int]class
}
func (sch *school) addclass(id int,title string) {
c := class{
id: id,
title: title,
}
if sch.cls == nil {
sch.cls = make(map[int]class)
}
key := len(sch.cls)+1
sch.cls[key] = c
}
func main() {
var sch school
sch.addclass(1001,"高二三班")
sch.addclass(1002,"高二四班")
sch.addclass(1003,"高二一班")
sch.addclass(1004,"高二二班")
fmt.Println(sch)
}