-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
808 lines (402 loc) · 28.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
<head>
<link href="http://gmpg.org/xfn/11" rel="profile">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1">
<link href="//fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<title>Golang Korean Community</title>
<link rel="stylesheet" href="https://golangkorea.github.io/css/hugo-octopress.css">
<link rel="stylesheet" href="https://golangkorea.github.io/css/custom.css">
<link rel="stylesheet" href="https://golangkorea.github.io/css/custom-font.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<link href="https://golangkorea.github.io/favicon.png" rel="icon">
<link href="https://golangkorea.github.io/index.xml" rel="alternate" type="application/rss+xml" title="Golang Korean Community" />
<meta name="description" content="Golang 한국 사용자 모임입니다.">
<meta name="keywords" content="Go,Golang,GolangKorea,Gopher">
<meta name="author" content="">
<meta name="generator" content="Hugo 0.16" />
<link rel="stylesheet" href="https://golangkorea.github.io/js/highlight/styles/darcula.css">
<link rel="stylesheet" href="https://golangkorea.github.io/js/jqcloud/jqcloud.min.css">
<link rel="stylesheet" href="//fonts.googleapis.com/earlyaccess/nanumgothic.css">
<link rel="stylesheet" href="//fonts.googleapis.com/earlyaccess/nanumgothiccoding.css">
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="https://golangkorea.github.io/js/highlight/highlight.pack.js"></script>
<script src="https://golangkorea.github.io/js/jqcloud/jqcloud.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body>
<header role="banner"><hgroup>
<h1><a href="https://golangkorea.github.io/">Golang Korean Community</a></h1>
<h2>Go에 관련된 수다를 추구하는 개발자들의 세상</h2>
</hgroup></header>
<nav role="navigation">
<ul class="main-navigation">
</ul>
<ul class="subscription">
<a href="https://golangkorea.github.io/index.xml" target="_blank" type="application/rss+xml" title="RSS"><i class="fa fa-rss-square fa-lg"></i></a>
</ul>
<script>
(function() {
var cx = '002661009167463862046:hk6lhiihuma';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<form>
<fieldset role="search">
<gcse:search class="search"></gcse:search>
</fieldset>
</form>
</nav>
<div id="main">
<div id="content">
<div class="blog-index">
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/gopher-academy/advent-2015/reducing-boilerplate-with-go-generate/">Reducing boilerplate with go generate</a>
</h1>
<p class="meta">Oct 16, 2016
- 5 minute read
- <a href="https://golangkorea.github.io/post/gopher-academy/advent-2015/reducing-boilerplate-with-go-generate/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/%eb%b2%88%ec%97%ad/">번역</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/timo-boll">Timo Boll</a>
</p>
<p>
<ul id="series">
<li>Series: <a href="https://golangkorea.github.io/series/advent-2015">Advent 2015</a> </li>
</ul>
</p>
</header>
<p>Reducing boilerplate with go generate 를 번역한 글입니다 Go는 대단한 언어입니다. 단순하고, 파워풀하며, 훌륭한 도구들을 가지고 있고, 우리 중 많은 이들은 매일 사용하는 것을 즐깁니다. 하지만 강한 타입의 언어들에서 일상적으로 발생하게 되는, 이것저것을 연결하기 위해서 필수로 사용해야 하는 boilerplate를 쓰게 됩니다. 이 포스트에서 다음의 세가지 포인트를 다룰 것입니다: 코드 생성(code generation)을 사용하여 boilerplate를 줄이도록 도와주는 Go 도구들을 만들 수 있어야 하는 이유는 무엇입니까. Go 코드 생성을 위한 블록 구성 요소는 무엇입니까.</p>
<footer>
<a href="https://golangkorea.github.io/post/gopher-academy/advent-2015/reducing-boilerplate-with-go-generate/" rel="full-article">Read On →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/structuring-applications-in-go/">Go에서 애플리케이션 설계하기</a>
</h1>
<p class="meta">Oct 10, 2016
- 6 minute read
- <a href="https://golangkorea.github.io/post/structuring-applications-in-go/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/%eb%b2%88%ec%97%ad/">번역</a><a class="label" href="https://golangkorea.github.io/categories/%ec%95%84%ed%82%a4%ed%85%8d%ec%b2%98/">아키텍처</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/mingrammer">mingrammer</a>
</p>
<p>
<ul id="series">
</ul>
</p>
</header>
<p>Structuring Applications in Go을 번역한 글입니다. 개요 Go를 배울 때 가장 어려웠던 부분은 애플리케이션을 어떻게 설계하는가였다. Go 이전에, 나는 Rails 애플리케이션을 만들었었는데 Rails는 애플리케이션을 특정한 방식으로 설계하도록 한다. “설정보다는 컨벤션”이라는게 그들의 모토였다. 그러나 Go는 그 어떤 프로젝트 구조나 애플리케이션 설계방식을 규정짓고 있지 않으며 Go의 컨벤션은 대개 제각각이다. 나는 Go 애플리케이션의 아키텍쳐를 구성하면서 발견한 정말 많은 도움이 되었던 4가지 패턴을 여러분에게 알려주려고한다. 이들은 공식적인 규칙은 아니며 누군가는 다른 의견을 가질 수 있다고 생각한다.</p>
<footer>
<a href="https://golangkorea.github.io/post/structuring-applications-in-go/" rel="full-article">Read On →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/go-start/object-oriented/">Go와 객체지향</a>
</h1>
<p class="meta">Oct 2, 2016
- 10 minute read
- <a href="https://golangkorea.github.io/post/go-start/object-oriented/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/how-to/">How-to</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/sangbae-yun">Sangbae Yun</a>
</p>
<p>
<ul id="series">
<li>Series: <a href="https://golangkorea.github.io/series/go-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0">Go 시작하기</a> </li>
</ul>
</p>
</header>
<p>객체지향 프로그래밍 Go는 클래스(Class)가 없다!! Struct가 Class의 역할을 수행 할 수 있기는 하지만 메서드도 구조체로부터 분리되는 구성을 가지고 있다. 단일 상속도 없고 당연히 다중 상속도 없다. 왠지 객체지향스럽지 않은 언어로 보일 수 있겠지만 충분히 객체지향적이다. 그냥 좀 다른 방법으로 객체를 지향하고 있을 따름이다. struct가 클래스를 대신한다. 다른 OOP에서의 클래스와는 달리 non-virtual(real) 메서드로만 구성된다. receiver로 구조체와 함수를 연결 해서 메서드를 구현한다. 네임스페이스(namespacing)는 exports로 대신한다. 인터페이스(interfaces)로 다형성을 구현할 수 있다. 다른 OOP에서는 필드 없이, virtual 메서드로만 구성된 클래스 형태로 구현된다.</p>
<footer>
<a href="https://golangkorea.github.io/post/go-start/object-oriented/" rel="full-article">Read On →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/golang-internals/part6/">Golang의 내부, 6부: 부트스트래핑과 메모리 할당자</a>
</h1>
<p class="meta">Sep 20, 2016
- 9 minute read
- <a href="https://golangkorea.github.io/post/golang-internals/part6/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/%eb%b2%88%ec%97%ad/">번역</a><a class="label" href="https://golangkorea.github.io/categories/%ed%95%b5%ed%82%b9/">핵킹</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/jhonghee-park">Jhonghee Park</a>
</p>
<p>
<ul id="series">
<li>Series: <a href="https://golangkorea.github.io/series/golang--internals">Golang Internals</a> </li>
</ul>
</p>
</header>
<p>이 포스트는 Golang 내부 시리즈의 연속이다. Go 런타임을 자세히 이해하는데 열쇠와 같은 부트스트랩 과정을 살펴볼 것이다. 이번에는 시작하는 순서의 두번째 부분을 섭렵해서 어떻게 인수들이 초기화되고, 어떤 함수들이 호출되는지 등을 배우겠다. 시작하는 순서 지난 번에 얘기하다가 만 runtime.rt0_go 함수를 다시 다루어야 겠다. 아직 이 함수에서 살펴보지 않은 부분이 여전히 있다. 01 CLD // convention is D is always left cleared 02 CALL runtime·check(SB) 03 04 MOVL 16(SP), AX // copy argc 05 MOVL AX, 0(SP) 06 MOVQ 24(SP), AX // copy argv 07 MOVQ AX, 8(SP) 08 CALL runtime·args(SB) 09 CALL runtime·osinit(SB) 10 CALL runtime·schedinit(SB) 첫번째 명령 (CLD)는 FLAGS 레지스터의 direction 프래그를 지운다.</p>
<footer>
<a href="https://golangkorea.github.io/post/golang-internals/part6/" rel="full-article">Read On →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/golang-internals/part5/">Golang의 내부, 5부: 런타임 부트스트랩</a>
</h1>
<p class="meta">Sep 19, 2016
- 8 minute read
- <a href="https://golangkorea.github.io/post/golang-internals/part5/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/%eb%b2%88%ec%97%ad/">번역</a><a class="label" href="https://golangkorea.github.io/categories/%ed%95%b5%ed%82%b9/">핵킹</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/jhonghee-park">Jhonghee Park</a>
</p>
<p>
<ul id="series">
<li>Series: <a href="https://golangkorea.github.io/series/golang--internals">Golang Internals</a> </li>
</ul>
</p>
</header>
<p>부트스트래핑 과정은 Go의 런타임이 어떻게 작동하는지를 이해하는데 열쇠와 같은 구실을 한다. Go와 함께 앞으로 나아가고자 한다면 반드시 배워야한다. 그래서 Golang의 내부 시리즈의 다섯번째는 Go의 런타임, 특히 Go의 부트스트래핑 과정에 바치겠다. 이번에 독자가 배울 항목들은: Go 부트스트래핑 가변 스택 구현 TLS 내부 구현 이 포스트에 어셈블러 코드가 많이 포함되어 있는 점을 주목하라. 진행하기 위해 적어도 어셈블러의 기본 지식은 필요할 것이다. (속성 Go 어셈블러 가이드가 여기 있다.) 이제 시작해 보자! 프로그램 시작점 찾기 우선, Go 프로그램이 시작된 후 즉시 실행되는 함수가 무엇인지 찾아보자.</p>
<footer>
<a href="https://golangkorea.github.io/post/golang-internals/part5/" rel="full-article">Read On →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/golang-internals/part4/">Golang의 내부, 4부: 오브젝트 파일, 그리고 함수 메타데이터</a>
</h1>
<p class="meta">Sep 18, 2016
- 4 minute read
- <a href="https://golangkorea.github.io/post/golang-internals/part4/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/%eb%b2%88%ec%97%ad/">번역</a><a class="label" href="https://golangkorea.github.io/categories/%ed%95%b5%ed%82%b9/">핵킹</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/jhonghee-park">Jhonghee Park</a>
</p>
<p>
<ul id="series">
<li>Series: <a href="https://golangkorea.github.io/series/golang--internals">Golang Internals</a> </li>
</ul>
</p>
</header>
<p>오늘은, Func 구조에 대해 좀 더 자세히 들여다 보고 어떻게 가비지 컬렉션이 작동하는지 몇가지 자세한 내용을 논하겠다. 이 포스트는 Golang의 내부, 3부: 링커, 오브젝트 파일, 그리고 재배치의 연속이어서, 독자가 아직 읽지 않았다면 이 포스트를 소화하기 전에 읽기를 적극 권장한다. 함수 메타데이터의 구조 재배치에 대한 주요한 아이디어는 3부를 통해 분명해 졌을 것이다. 이제 main 메서드의 Func 구조를 살펴보자: 01 Func: &goobj.Func{ 02 Args: 0, 03 Frame: 8, 04 Leaf: false, 05 NoSplit: false, 06 Var: { 07 }, 08 PCSP: goobj.Data{Offset:255, Size:7}, 09 PCFile: goobj.Data{Offset:263, Size:3}, 10 PCLine: goobj.Data{Offset:267, Size:7}, 11 PCData: { 12 {Offset:276, Size:5}, 13 }, 14 FuncData: { 15 { 16 Sym: goobj.SymID{Name:"gclocals·3280bececceccd33cb74587feedb1f9f", Version:0}, 17 Offset: 0, 18 }, 19 { 20 Sym: goobj.SymID{Name:"gclocals·3280bececceccd33cb74587feedb1f9f", Version:0}, 21 Offset: 0, 22 }, 23 }, 24 File: {"/home/adminone/temp/test.go"}, 25 }, 이 구조체는 Go언어의 런타임이 사용하는, 컴파일러가 오브젝트 파일에 방출한 함수 메타데이터로 생각해 볼 수 있다.</p>
<footer>
<a href="https://golangkorea.github.io/post/golang-internals/part4/" rel="full-article">Read On →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/golang-internals/part3/">Golang의 내부, 3부: 링커, 오브젝트 파일, 그리고 재배치</a>
</h1>
<p class="meta">Sep 17, 2016
- 6 minute read
- <a href="https://golangkorea.github.io/post/golang-internals/part3/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/%eb%b2%88%ec%97%ad/">번역</a><a class="label" href="https://golangkorea.github.io/categories/%ed%95%b5%ed%82%b9/">핵킹</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/jhonghee-park">Jhonghee Park</a>
</p>
<p>
<ul id="series">
<li>Series: <a href="https://golangkorea.github.io/series/golang--internals">Golang Internals</a> </li>
</ul>
</p>
</header>
<p>오늘은 Go 링커와 오브젝트 파일, 그리고 재배치(relocations)에 대해 얘기해 보자. 이런 것들이 독자들과 무슨 상관이 있을까? 만약 독자가 어떤 대형 프로젝트의 내부에 대해 배우고자 한다면, 첫번째 할 일이 그 것을 콤포넌트나 모듈로 자를 필요가 있다. 둘째로 이 모듈들이 서로에게 어떤 인터페이스를 제공하는지 이해할 필요가 있다. Go 언어 프로젝트의 경우, 이런 상위 모듈들이 컴파일러, 링커, 그리고 런타임이다. 컴파일러가 제공하고 링커가 사용하는 것이 오프젝트 파일인데, 오늘은 그 것으로 조사를 시작해 보자. Go 오브젝트 파일 생성하기 실용적인 실험을 하나 해 보자-아주 간단한 프로그램을 하나 만들고, 컴파일하고, 어떤 오브젝트 파일이 만들어 지는지 관찰하자.</p>
<footer>
<a href="https://golangkorea.github.io/post/golang-internals/part3/" rel="full-article">Read On →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/golang-internals/part2/">Golang의 내부, 2부: Go 컴파일러 들여다 보기</a>
</h1>
<p class="meta">Sep 15, 2016
- 8 minute read
- <a href="https://golangkorea.github.io/post/golang-internals/part2/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/%eb%b2%88%ec%97%ad/">번역</a><a class="label" href="https://golangkorea.github.io/categories/%ed%95%b5%ed%82%b9/">핵킹</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/jhonghee-park">Jhonghee Park</a>
</p>
<p>
<ul id="series">
<li>Series: <a href="https://golangkorea.github.io/series/golang--internals">Golang Internals</a> </li>
</ul>
</p>
</header>
<p>독자는 인터페이스 레퍼런스를 통해 변수를 사용할 경우 Go 런타임내에서 어떤 일이 있는지 정확하게 알고 있는가? 이 질문에 쉽게 답할 수 없는 이유는 어떤 인터페이스를 구현하는 타입의 경우 그 인터페이스를 가리키는 어떤 레퍼런스도 갖고 있지 않기 때문이다. 하지만 여전히 시도는 해 볼 수 있는데 이전 블로그 포스트에서 논했던 Go 컴파일러의 지식을 이용하는 것이다. 그러면, Go 컴파일러속으로 잠수해 들어가자: 간단한 Go 프로그램을 제작하고 Go 타입캐스팅(typecasting)이 내부적으로 어떻게 동작하는 지 살펴보겠다. 이 것을 예로 들면서, 어떻게 노드 트리가 생성되고 사용되는지 설명하겠다.</p>
<footer>
<a href="https://golangkorea.github.io/post/golang-internals/part2/" rel="full-article">Read On →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/golang-internals/part1/">Golang의 내부, 1부: 주요 컨셉트와 프로젝트 구조</a>
</h1>
<p class="meta">Sep 13, 2016
- 5 minute read
- <a href="https://golangkorea.github.io/post/golang-internals/part1/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/%eb%b2%88%ec%97%ad/">번역</a><a class="label" href="https://golangkorea.github.io/categories/%ed%95%b5%ed%82%b9/">핵킹</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/jhonghee-park">Jhonghee Park</a>
</p>
<p>
<ul id="series">
<li>Series: <a href="https://golangkorea.github.io/series/golang--internals">Golang Internals</a> </li>
</ul>
</p>
</header>
<p>이 블로그 시리즈는 기본적인 Go 언어특성에 이미 익숙하며 좀 더 심도있게 내부구조를 알고자 하는 독자들을 위해 쓰여졌다. 이 포스트는 Go언어의 소스코드의 구조와 Go 컴파일러의 내부를 어느 정도 상세히 살펴보겠다. 이 글을 읽고 난 후, 독자는 다음과 같은 질문에 답을 얻을 것이다. Go의 소스코드는 어떤 구조를 가지고 있는가? Go의 컴파일러는 어떻게 동작하는가? Go의 노드 트리(node treee)의 기본 구조는 무엇인가? 시작하며 새로운 프로그래밍 언어를 배우기 시작할 때, 보통은 “hello-world”와 같은 튜토리얼이나, 초보자 가이드, 그리고 언어의 주요한 컨셉트, 문법, 심지어 표준 라이브러리에 대한 상세한 정보들 많이 접하게 된다.</p>
<footer>
<a href="https://golangkorea.github.io/post/golang-internals/part1/" rel="full-article">Read On →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title">
<a href="https://golangkorea.github.io/post/golang-internals/resources/">Golang의 내부, 0부: 부록</a>
</h1>
<p class="meta">Sep 12, 2016
- 1 minute read
- <a href="https://golangkorea.github.io/post/golang-internals/resources/#disqus_thread">Comments</a>
- <a class="label" href="https://golangkorea.github.io/categories/%eb%b2%88%ec%97%ad/">번역</a><a class="label" href="https://golangkorea.github.io/categories/%ed%95%b5%ed%82%b9/">핵킹</a>
</p>
<p>Posted by
<a href="https://golangkorea.github.io/authors/jhonghee-park">Jhonghee Park</a>
</p>
<p>
<ul id="series">
<li>Series: <a href="https://golangkorea.github.io/series/golang--internals">Golang Internals</a> </li>
</ul>
</p>
</header>
<p>Go 언어의 최신 컴파일러에 대한 내용 GopherCon 2016: Rob Pike - The Design of the Go Assembler Video Slides GopherCon 2014 Go from C to Go by Russ Cox Video Slides GopherFest 2015: Rob Pike on the move from C to Go in the toolchain Video Slides Go의 어셈블러 A Quick Guide to Go’s Assembler</p>
</article>
<div class="pagination">
<a href="https://golangkorea.github.io/" aria-label="First" class="label-pagination"><i class="fa fa-angle-double-left fa-lg"></i></a>
<a href="https://golangkorea.github.io/" class="label-pagination">1</a>
<a href="https://golangkorea.github.io/page/2/" class="label-pagination">2</a>
<a href="https://golangkorea.github.io/page/3/" class="label-pagination">3</a>
<a href="https://golangkorea.github.io/page/2/" aria-label="Next" class="label-pagination"><i class="fa fa-angle-right fa-lg"></i></a>
<a href="https://golangkorea.github.io/page/3/" aria-label="Last"><i class="fa fa-angle-double-right fa-lg"></i></a>
</div>
</div>
<aside class="sidebar thirds">
<section class="first odd">
<h1>못 먹어도 Go인 세상</h1>
<p>
새로운 도전과 개발의 재미를 Go를 통해 만끽해 보세요. We love to talk, learn and share our experience. Come join us. Let’s have some fun!
</p>
</section>
<ul class="sidebar-nav">
<li class="sidebar-nav-item">
<a target="_blank" href="https://github.com/golangkorea/golangkorea-hugo/" title="https://github.com/golangkorea/golangkorea-hugo/"><i class="fa fa-github fa-3x"></i></a>
<a target="_blank" href="https://plus.google.com/communities/115721275599816202991" title="https://plus.google.com/communities/115721275599816202991"><i class="fa fa-google-plus fa-3x"></i></a>
<a target="_blank" href="https://www.facebook.com/groups/golangko/" title="https://www.facebook.com/groups/golangko/"><i class="fa fa-facebook fa-3x"></i></a>
</li>
</ul>
<section class="odd">
<h1>Join Us</h1>
<li>
<a href="https://github.com/golangkorea" title="GitHub Organization" target="_blank" >GitHub Organization</a>
</li>
<li>
<a href="https://gitter.im/golang-korean-community/golangkorea.github.io?utm_source=share-link&utm_medium=link&utm_campaign=share-link" title="Gitter Room" target="_blank" >Gitter Room</a>
</li>
</section>
<section class="even">
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="https://golangkorea.github.io/post/gopher-academy/advent-2015/reducing-boilerplate-with-go-generate/">Reducing boilerplate with go generate</a>
</li>
<li class="post">
<a href="https://golangkorea.github.io/author/timo-boll/">JongMin Kim</a>
</li>
<li class="post">
<a href="https://golangkorea.github.io/post/structuring-applications-in-go/">Go에서 애플리케이션 설계하기</a>
</li>
<li class="post">
<a href="https://golangkorea.github.io/post/go-start/object-oriented/">Go와 객체지향</a>
</li>
<li class="post">
<a href="https://golangkorea.github.io/post/golang-internals/part6/">Golang의 내부, 6부: 부트스트래핑과 메모리 할당자</a>
</li>
</ul>
</section>
<section class="odd">
<h1>Tags</h1>
<ul id="tags">
<div id="tags-cloud"></div>
</ul>
</section>
</aside>
<script type="text/javascript">
$(document).ready(function() {
var words = [
{ text: "allocator", weight: 1 , link: "/tags/allocator" },
{ text: "assembler", weight: 1 , link: "/tags/assembler" },
{ text: "beginning", weight: 2 , link: "/tags/beginning" },
{ text: "blog", weight: 7 , link: "/tags/blog" },
{ text: "bootstrap", weight: 2 , link: "/tags/bootstrap" },
{ text: "community", weight: 1 , link: "/tags/community" },
{ text: "compiler", weight: 3 , link: "/tags/compiler" },
{ text: "development", weight: 2 , link: "/tags/development" },
{ text: "golang", weight: 8 , link: "/tags/golang" },
{ text: "hugo", weight: 7 , link: "/tags/hugo" },
{ text: "install", weight: 1 , link: "/tags/install" },
{ text: "internals", weight: 7 , link: "/tags/internals" },
{ text: "linker", weight: 3 , link: "/tags/linker" },
{ text: "memory", weight: 1 , link: "/tags/memory" },
{ text: "metadata", weight: 1 , link: "/tags/metadata" },
{ text: "object-file", weight: 2 , link: "/tags/object-file" },
{ text: "object-oriented", weight: 1 , link: "/tags/object-oriented" },
{ text: "read", weight: 1 , link: "/tags/read" },
{ text: "relocations", weight: 2 , link: "/tags/relocations" },
{ text: "runtime", weight: 2 , link: "/tags/runtime" },
{ text: "struct", weight: 1 , link: "/tags/struct" },
{ text: "structure", weight: 2 , link: "/tags/structure" },
{ text: "tdd", weight: 1 , link: "/tags/tdd" },
{ text: "unittest", weight: 1 , link: "/tags/unittest" },
{ text: "vim", weight: 1 , link: "/tags/vim" },
{ text: "번역", weight: 2 , link: "/tags/%EB%B2%88%EC%97%AD" },
{ text: "아키텍쳐", weight: 1 , link: "/tags/%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90" },
];
$('#tags-cloud').jQCloud(words, {
width: 280,
height: 300
});
});
</script>
</div>
</div>
<footer role="contentinfo">
<p>Copyright © 2016 - <a href="https://golangkorea.github.io/license/">License</a> -
<span class="credit">Powered by <a target="_blank" href="https://gohugo.io">Hugo</a> and <a target="_blank" href="https://github.com/parsiya/hugo-octopress/">Hugo-Octopress</a> theme.
</p>
</footer>
</body>
</html>