Skip to content

Commit 1fc42d2

Browse files
committed
Upload 2019.03 codelab slides and resources
1 parent 3f96039 commit 1fc42d2

39 files changed

+563
-0
lines changed

README.md

+10
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@ Golang Korea에서 주최하는 밋업, 세미나 및 컨퍼런스의 발표 자
44

55

66

7+
## Golang Korea Codelab in Seoul 2019.03
8+
9+
> [밋업 링크](https://www.meetup.com/Seoul-Go-Meetup/events/259524407/)
10+
11+
| 발표자 | 주제 | 발표 자료 | 코드 자료 |
12+
| -------- | ---------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------- |
13+
| 홍혜종님 | Go 소개 및 실습 | [Introduction to Go Programming](slides/201903/introduction-to-go-programming.pdf) | [실습 예제](resources/201903/codelab) |
14+
| 권민재님 | Go로 Google OAuth2 로그인 구현하기 | [OAuth2 Codelab](slides/201903/codelab-oauth2.pdf) | [코드랩 링크](https://github.com/golangkorea/codelab) |
15+
716
## Golang Korea MeetUp in Seoul 2019.01
817

918
> [밋업 링크](https://www.meetup.com/Seoul-Go-Meetup/events/258121678/)
@@ -50,3 +59,4 @@ Golang Korea에서 주최하는 밋업, 세미나 및 컨퍼런스의 발표 자
5059
| -------- | ------------------------------------------------------------ | ----------------------------------------------------------------------- |
5160
| 유승일님 | Bazel for Go | [Bazel for Go](slides/201807/bazel-for-golang.pdf) |
5261
| 배상익님 | Golang과 웹소켓을 활용한 서버 프로그래밍 (장애 없는 서버 런칭 도전기) | [Golang과 웹소켓을 활용한 서버 프로그래밍](slides/201807/server-programming-with-golang-and-websocket.pdf) |
62+
1.81 MB
Binary file not shown.
1.86 MB
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
fmt.Println("Hello World")
7+
}
8+
9+
// GOOS=linux GOARCH=amd64 go build 4_1_cross_compile.go
10+
// GOOS=windows GOARCH=amd64 go build 4_1_cross_compile.go
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main(){
6+
fmt.Println("Hello world.")
7+
}
8+
9+
+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+
fmt.println("Hello world.")
7+
}
8+
9+
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package main
2+
3+
import (
4+
t "text/template"
5+
h "html/template"
6+
)
7+
8+
func main() {
9+
t.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
10+
h.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
11+
}

resources/201903/codelab/3_4_blank.go

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package main
2+
3+
import (
4+
"database/sql"
5+
"fmt"
6+
7+
_ "github.com/go-sql-driver/mysql"
8+
)
9+
10+
func main() {
11+
db, err := sql.Open("mysql", "user:password@/database")
12+
if err != nil {
13+
panic(err.Error()) // Just for example purpose. You should use proper error handling instead of panic
14+
}
15+
defer db.Close()
16+
17+
fmt.Println(db.Ping())
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package main
2+
3+
import "fmt"
4+
5+
//func main() {
6+
// foo := 1
7+
// foo := 2
8+
//
9+
// fmt.Println(foo)
10+
//}
11+
12+
//func main() {
13+
// foo := 1
14+
// {
15+
// foo := 2
16+
// fmt.Println(foo)
17+
// }
18+
// fmt.Println(foo)
19+
//}
20+
21+
func main() {
22+
//foo, bar := 1, 2
23+
foo, err := someFunc()
24+
waldo, err := someFunc()
25+
26+
fmt.Println(foo, waldo, err)
27+
}
28+
func someFunc() (int, error) {
29+
return 1, nil
30+
}
+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+
var a [4]int
7+
b := [2]string{"Penn", "Teller"}
8+
c := [...]bool{true, false, false}
9+
10+
fmt.Println(a,b,c)
11+
}
+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+
letters := []string{"a", "b", "c", "d"}
7+
var bytes = make([]byte, 5, 10)
8+
b := make([]int, 3, 3)
9+
10+
fmt.Println(letters,bytes,b)
11+
}
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main(){
6+
s := make([]int, 4, 4)
7+
s = append(s, 1)
8+
9+
fmt.Println(s,len(s),cap(s))
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main(){
6+
s := []int{0, 1, 2, 3, 4}
7+
s = s[2:4]
8+
fmt.Println(s, len(s), cap(s))
9+
10+
s = s[1:]
11+
fmt.Println(s, len(s), cap(s))
12+
}

resources/201903/codelab/4_15_map.go

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var m map[string]int
7+
m = make(map[string]int)
8+
9+
names := map[string]int{
10+
"rsc": 3711,
11+
}
12+
13+
tables := make(map[string]int)
14+
15+
fmt.Println(m, names, tables)
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
m := make(map[string]int)
7+
8+
m["foo"] = 5 // write
9+
10+
_ = m["foo"] // read
11+
12+
foo, exist := m["foo"] // second read
13+
fmt.Println(foo, exist)
14+
15+
//delete(m, "foo") // delete
16+
17+
fmt.Println(m)
18+
19+
}
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package main
2+
3+
import "fmt"
4+
5+
type Person struct {
6+
_ struct{}
7+
FirstName *string
8+
LastName *string
9+
Age *int
10+
}
11+
12+
func main() {
13+
var h1 Person = Person{FirstName: "Hyejong", LastName: "Hong", Age: 29}
14+
var h2 Person = Person{"Kwon", "Minjae", 25}
15+
16+
fmt.Println(h1, h2)
17+
}
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package main
2+
3+
import "fmt"
4+
5+
type Person struct {
6+
FirstName string
7+
LastName string
8+
Age int
9+
}
10+
11+
func (p Person) Major() bool { return p.Age >= 18 }
12+
func (p *Person) Birthday() { p.Age++ }
13+
14+
func main(){
15+
var h1 Person = Person{FirstName:"Hyejong", LastName:"Hong",Age:17}
16+
h1.Birthday()
17+
fmt.Println(h1.Major())
18+
}
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
import "fmt"
4+
5+
type Person struct {
6+
FirstName string
7+
LastName string
8+
string
9+
}
10+
11+
func main() {
12+
var h1 Person = Person{FirstName: "Hyejong", LastName: "Hong", string: "2323"}
13+
h1.string = "14141"
14+
fmt.Println(h1)
15+
}
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func intSeq() func() int {
6+
i := 0
7+
return func() int {
8+
i++
9+
return i
10+
}
11+
}
12+
13+
func main(){
14+
nextInt := intSeq()
15+
fmt.Println(nextInt())
16+
fmt.Println(nextInt())
17+
fmt.Println(nextInt())
18+
19+
newInts := intSeq()
20+
fmt.Println(newInts())
21+
}

resources/201903/codelab/4_20_tag.go

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"reflect"
6+
)
7+
8+
type T struct {
9+
f1 string "f one"
10+
f2, f3 int64 `f four and five`
11+
f4 string `one:"1"`
12+
}
13+
14+
func main() {
15+
t := reflect.TypeOf(T{})
16+
f1, _ := t.FieldByName("f1")
17+
fmt.Println(f1.Tag) // f one
18+
19+
f2, _ := t.FieldByName("f2")
20+
f3, _ := t.FieldByName("f3")
21+
fmt.Println(f2.Tag, f3.Tag) // f four and five
22+
23+
f4, _ := t.FieldByName("f4")
24+
fmt.Println(f4.Tag) // one:"1"
25+
26+
v, ok := f4.Tag.Lookup("one")
27+
fmt.Printf("%s, %t\n", v, ok) // 1, true
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
)
7+
8+
type T struct {
9+
F1 int `json:"f1"`
10+
F2 int `json:"F2"`
11+
F3 int `json:"-"`
12+
}
13+
14+
func main() {
15+
t := T{1, 0, 3}
16+
b, err := json.Marshal(t)
17+
if err != nil {
18+
panic(err)
19+
}
20+
fmt.Printf("%s\n", b) // {"f1":1,"F2":0}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
)
7+
8+
type T struct {
9+
F1 int `json:"f1"`
10+
F2 int `json:"F2"`
11+
F3 int `json:"-"`
12+
}
13+
14+
func main() {
15+
b := []byte(`{"f1":1,"F2":2, "F3":3}`)
16+
t := T{}
17+
if err := json.Unmarshal(b, &t); err != nil {
18+
panic(err)
19+
}
20+
fmt.Println(t) // {1 2 0}
21+
}
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"strconv"
6+
)
7+
8+
type Stringer interface {
9+
String() string
10+
}
11+
12+
type Stringer2 interface {
13+
String() string
14+
}
15+
16+
type Binary uint64
17+
18+
func (i Binary) String() string {
19+
return strconv.FormatUint(uint64(i), 2)
20+
}
21+
22+
func main() {
23+
b := Binary(200)
24+
25+
s := Stringer(b)
26+
fmt.Println(s.String())
27+
28+
b2, ok := s.(Binary) // interface value -> concrete value
29+
if ok != false {
30+
fmt.Println(b2, ok)
31+
32+
}
33+
}

0 commit comments

Comments
 (0)