Skip to content

Commit f8ede43

Browse files
author
xiaolong.ran
committed
add yuheng
1 parent a082be4 commit f8ede43

File tree

12 files changed

+252
-0
lines changed

12 files changed

+252
-0
lines changed

defer.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package main
2+
3+
4+
import (
5+
"fmt"
6+
)
7+
8+
func main() {
9+
defer_call()
10+
}
11+
12+
func defer_call() {
13+
defer func() { fmt.Println("打印前") }()
14+
defer func() { fmt.Println("打印中") }()
15+
defer func() { fmt.Println("打印后") }()
16+
17+
panic("触发异常")
18+
}

file_read.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package main
2+
3+
import (
4+
"os"
5+
"github.com/davecgh/go-spew/spew"
6+
)
7+
8+
func main() {
9+
tmp := make([]byte, 1)
10+
file, err := os.OpenFile("/Users/wolf4j/go/src/golang/read.txt", 1, os.ModePerm)
11+
if err != nil {
12+
panic("wandan")
13+
}
14+
n, err := file.Read(tmp)
15+
if err != nil {
16+
panic("wandan")
17+
}
18+
spew.Dump(n)
19+
}

io/opendiskfile.go

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
)
7+
8+
func checkERR(e error) {
9+
if e != nil {
10+
panic(e)
11+
}
12+
}
13+
func main() {
14+
//dat, err := ioutil.ReadFile("/tmp/dat")
15+
//checkERR(err)
16+
//fmt.Print(string(dat))
17+
////open只是以只读的方式打开
18+
//f, err := os.Open("/tmp/dat")
19+
//checkERR(err)
20+
21+
//=============================
22+
//openfile
23+
// os.O_RDONLY // 只读
24+
// os.O_WRONLY // 只写
25+
// os.O_RDWR // 读写
26+
// os.O_APPEND // 往文件中添建(Append)
27+
// os.O_CREATE // 如果文件不存在则先创建
28+
// os.O_TRUNC // 文件打开时裁剪文件
29+
// os.O_EXCL // 和O_CREATE一起使用,文件不能存在
30+
// os.O_SYNC // 以同步I/O的方式打开
31+
//f1, err := os.OpenFile("/tmp/eat", os.O_RDONLY, os.ModePerm)
32+
//defer f1.Close()
33+
//checkERR(err)
34+
//ret, err := f1.Seek(3, 0)
35+
//bb := make([]byte, 8)
36+
//checkERR(err)
37+
//n, err := f1.Read(bb)
38+
//checkERR(err)
39+
//fmt.Printf("ret:%d , read:%d, value: %s", ret, n, string(bb))
40+
41+
f2, err := os.OpenFile("/tmp/eat", os.O_WRONLY, os.ModePerm)
42+
defer f2.Close()
43+
checkERR(err)
44+
ret2, err := f2.Seek(3, 0)
45+
checkERR(err)
46+
fmt.Printf("ret2:%d\n", ret2)
47+
bb2 := []byte("Bytes\n")
48+
nn2, err := f2.Write(bb2)
49+
checkERR(err)
50+
fmt.Printf("value nn2:%v\n", nn2)
51+
ret22, err := f2.Seek(8, 0)
52+
checkERR(err)
53+
fmt.Printf("ret22:%d\n", ret22)
54+
//=============================
55+
56+
//b1 := make([]byte, 5)
57+
//n1, err := f.Read(b1)
58+
//checkERR(err)
59+
//fmt.Printf("%d bytes: %s\n", n1, string(b1))
60+
//
61+
//o2, err := f.Seek(6, 0)
62+
//checkERR(err)
63+
//b2 := make([]byte, 2)
64+
//n2, err := f.Read(b2)
65+
//checkERR(err)
66+
//fmt.Printf("%d bytes @ %d: %s\n", n2, o2, string(b2))
67+
//
68+
//o3, err := f.Seek(6, 0)
69+
//checkERR(err)
70+
//b3 := make([]byte, 2)
71+
//n3, err := io.ReadAtLeast(f, b3, 2)
72+
//checkERR(err)
73+
//fmt.Printf("%d bytes @ %d: %s\n", n3, o3, string(b3))
74+
//
75+
//_, err = f.Seek(0, 0)
76+
//checkERR(err)
77+
//r4 := bufio.NewReader(f)
78+
//b4, err := r4.Peek(5)
79+
//checkERR(err)
80+
//fmt.Printf("5 bytes: %s\n", string(b4))
81+
//
82+
//f.Close()
83+
}

mapstruct.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
type student struct {
4+
Name string
5+
Age int
6+
}
7+
8+
func pase_student() {
9+
m := make(map[string]*student)
10+
stus := []student{
11+
{Name: "zhou", Age: 24},
12+
{Name: "li", Age: 23},
13+
{Name: "wang", Age: 22},
14+
}
15+
16+
//错误写法
17+
//for _, stu := range stus {
18+
// m[stu.Name] = &stu
19+
//}
20+
21+
for i := 0; i < len(stus); i++ {
22+
m[stus[i].Name] = &stus[i]
23+
}
24+
for k, v := range m {
25+
println(k, "=>", v.Name)
26+
}
27+
28+
}
29+
30+
func main() {
31+
pase_student()
32+
}

os/gomaxprocs.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package main
2+
3+
import (
4+
"runtime"
5+
"sync"
6+
"fmt"
7+
)
8+
9+
func main() {
10+
runtime.GOMAXPROCS(1)
11+
wg := sync.WaitGroup{}
12+
wg.Add(20)
13+
for i := 0; i < 10; i++ {
14+
go func() {
15+
fmt.Println("A: ", i)
16+
wg.Done()
17+
}()
18+
}
19+
for i := 0; i < 10; i++ {
20+
go func(i int) {
21+
fmt.Println("B: ", i)
22+
wg.Done()
23+
}(i)
24+
}
25+
wg.Wait()
26+
}

os/pmg

1010 KB
Binary file not shown.

os/pmg.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package main
2+
3+
import (
4+
"sync/atomic"
5+
"time"
6+
"runtime"
7+
)
8+
9+
//GODEBUG=schedtrace=1000,scheddetail=1 ./pmg
10+
//GOMAXPROCS=1 GODEBUG=schedtrace=1000 ./pmg
11+
12+
var count int64
13+
14+
func test() {
15+
atomic.AddInt64(&count, 1)
16+
defer atomic.AddInt64(&count, -1)
17+
18+
19+
runtime.LockOSThread()
20+
defer runtime.LockOSThread()
21+
22+
time.Sleep(time.Second)//1s
23+
}
24+
25+
func main() {
26+
for i := 0; i <= 2000; i++ {
27+
go test()
28+
}
29+
30+
for {
31+
time.Sleep(time.Second)
32+
}
33+
}

race_conditions.o

4.04 KB
Binary file not shown.

read.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
laiba,kuaihuoa

structss.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package main
2+
3+
import "fmt"
4+
5+
type People struct{}
6+
7+
func (p *People) ShowA() {
8+
fmt.Println("showA")
9+
p.ShowB()
10+
}
11+
func (p *People) ShowB() {
12+
fmt.Println("showB")
13+
}
14+
15+
type Teacher struct {
16+
People
17+
}
18+
19+
func (t *Teacher) ShowB() {
20+
fmt.Println("teacher showB")
21+
}
22+
23+
func main() {
24+
t := Teacher{}
25+
t.ShowA()
26+
27+
}

yuheng/day01/hello

1.84 MB
Binary file not shown.

yuheng/day01/hello.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package main
2+
3+
import "fmt"
4+
5+
// go build -o hello hello.go
6+
// file hello
7+
// ./hello
8+
func main() {
9+
fmt.Println("hello world")
10+
}
11+
12+
13+
//推荐自己去下载源码进行编译,go支持自举,可以使用低版本编译高版本

0 commit comments

Comments
 (0)