Skip to content

Commit 744b9ef

Browse files
committed
first commit
0 parents  commit 744b9ef

File tree

125 files changed

+2189
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+2189
-0
lines changed

.vscode/launch.json

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
// Use IntelliSense to learn about possible attributes.
3+
// Hover to view descriptions of existing attributes.
4+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5+
"version": "0.2.0",
6+
"configurations": [
7+
{
8+
"name": "Launch file",
9+
"type": "go",
10+
"request": "launch",
11+
"mode": "debug",
12+
"program": "${file}"
13+
},
14+
{
15+
"name": "Launch",
16+
"type": "go",
17+
"request": "launch",
18+
"mode": "auto",
19+
"program": "${fileDirname}",
20+
"env": {},
21+
"args": []
22+
}
23+
]
24+
}

01-Hello/hello/hello.go

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
fmt.Printf("hello world\n")
7+
}

01-Hello/hello2/hello.go

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
"gosrc/01-Hello/stringutil"
7+
)
8+
9+
func main() {
10+
fmt.Println(stringutil.Reverse("hello world"))
11+
}

01-Hello/stringutil/reverse.go

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package stringutil
2+
3+
//Reverse the input string
4+
func Reverse(s string) string {
5+
r := []rune(s)
6+
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
7+
r[i], r[j] = r[j], r[i]
8+
}
9+
return string(r)
10+
}

01-Hello/stringutil/reverse_test.go

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package stringutil
2+
3+
import "testing"
4+
5+
func TestReverse(t *testing.T) {
6+
cases := []struct {
7+
in, want string
8+
}{
9+
{"Hello, world", "dlrow ,olleH"},
10+
{"", ""},
11+
}
12+
13+
for _, c := range cases {
14+
got := Reverse(c.in)
15+
if got != c.want {
16+
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
17+
}
18+
}
19+
}

02-ProgramStructure/01-var/main.go

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var s string
7+
var s1 string = "hello"
8+
var s2 = "world"
9+
10+
var i, j, k int
11+
var b, f, s3 = true, 2.3, "hello"
12+
13+
fmt.Printf("s=%s, s1=%s s2=%s\n", s, s1, s2)
14+
fmt.Printf("i=%d, j=%d, k=%d\n", i, j, k)
15+
fmt.Printf("b=%t, f=%f, s3=%s\n", b, f, s3)
16+
17+
m := 10
18+
fmt.Printf("m=%d\n", m)
19+
20+
}
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
x := 100
7+
p := &x
8+
fmt.Println(*p)
9+
10+
*p = 2
11+
fmt.Println(x)
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
x := 100
7+
y := 200
8+
9+
fmt.Println(&x == &x, &x == &y, &x == nil)
10+
}
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func incr(p *int) {
6+
*p++
7+
}
8+
func main() {
9+
x := 100
10+
incr(&x)
11+
fmt.Println(x)
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func f() *int {
6+
v := 100
7+
return &v
8+
}
9+
10+
func main() {
11+
var p = f()
12+
fmt.Println(*p)
13+
}

02-ProgramStructure/05-new/main.go

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
p := new(int)
7+
*p = 2
8+
fmt.Println(*p)
9+
}
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
var global *int
4+
5+
func f() {
6+
// heap allocated
7+
var x int
8+
x = 100
9+
global = &x
10+
}
11+
12+
func g() {
13+
// stack allocated
14+
y := new(int)
15+
*y = 1
16+
}
17+
18+
func main() {
19+
f()
20+
g()
21+
}
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package main
2+
3+
import "fmt"
4+
5+
type celcius float64
6+
type fahreneit float64
7+
8+
func main() {
9+
var c celcius
10+
var f fahreneit
11+
12+
fmt.Println(c == f)
13+
}

02-ProgramStructure/08-method/main.go

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package main
2+
3+
import "fmt"
4+
5+
// Celcius type declaration
6+
type Celcius float64
7+
8+
func (c Celcius) String() string {
9+
return fmt.Sprintf("%gC", c)
10+
}
11+
12+
func main() {
13+
var c Celcius
14+
c = 100
15+
fmt.Println(c)
16+
}

02-ProgramStructure/scope/main.go

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func f() int {
6+
return 100
7+
}
8+
9+
func g() int {
10+
return 200
11+
}
12+
13+
func main() {
14+
if x := f(); x == 0 {
15+
fmt.Println(x)
16+
} else if y := g(); x == y {
17+
fmt.Println(x, y)
18+
} else {
19+
fmt.Println(x, y)
20+
}
21+
22+
// declaration error
23+
fmt.Println(x, y)
24+
}

02-ProgramStructure/scope2/abc

Whitespace-only changes.

02-ProgramStructure/scope2/main.go

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
)
7+
8+
func main() {
9+
f, err := os.Open("abc")
10+
if err != nil {
11+
fmt.Println(err)
12+
os.Exit(1)
13+
}
14+
fmt.Println(f.Stat())
15+
}

03-Constructs/01-for/main.go

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
for x := 0; x < 10; x++ {
7+
fmt.Println(x)
8+
}
9+
}

03-Constructs/01-for2/main.go

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
x := 1
7+
for x < 10 {
8+
x++
9+
}
10+
fmt.Println(x)
11+
}

03-Constructs/01-for3/main.go

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package main
2+
3+
func main() {
4+
x := 1
5+
for {
6+
x++
7+
if x < 10 {
8+
break
9+
}
10+
}
11+
}

03-Constructs/01-for4/main.go

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
for i, v := range []string{"simon", "jessy"} {
7+
fmt.Println(i, v)
8+
}
9+
10+
for _, v := range []string{"peter", "mark"} {
11+
fmt.Println(v)
12+
}
13+
}

03-Constructs/02-break/main.go

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package main
2+
3+
func main() {
4+
a := 15
5+
for i := 1; i < 20; i++ {
6+
if i == a {
7+
break
8+
}
9+
}
10+
}

03-Constructs/02-break2/main.go

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
a := 0
7+
Loop:
8+
for i := 0; i < 20; i++ {
9+
for j := 0; j < 10; i++ {
10+
if a == 15 {
11+
break Loop
12+
}
13+
a++
14+
}
15+
}
16+
fmt.Println(a)
17+
}

03-Constructs/02-continue/main.go

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
for i := 0; i < 10; i++ {
7+
if i%2 == 0 {
8+
continue
9+
}
10+
fmt.Println(i)
11+
}
12+
}

03-Constructs/03-switch/main.go

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func coinflip(x int) string {
6+
if x%2 == 0 {
7+
return "heads"
8+
} else {
9+
return "tails"
10+
}
11+
}
12+
13+
func main() {
14+
var heads, tails int
15+
for i := 0; i < 10; i++ {
16+
switch coinflip(i) {
17+
case "heads":
18+
heads++
19+
case "tails":
20+
tails++
21+
default:
22+
}
23+
}
24+
fmt.Println(heads, tails)
25+
}

03-Constructs/03-switch2/main.go

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package main
2+
3+
func main() {
4+
x := 100
5+
switch {
6+
case x > 0:
7+
case x < 0:
8+
default:
9+
}
10+
}

03-Constructs/03-switch3/main.go

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package main
2+
3+
func f() int {
4+
return 100
5+
}
6+
func main() {
7+
switch x := f(); x {
8+
case 100:
9+
x = x + 50
10+
case 200:
11+
default:
12+
}
13+
}

0 commit comments

Comments
 (0)