-
Notifications
You must be signed in to change notification settings - Fork 1
/
GTG22.slide
1104 lines (677 loc) · 45.5 KB
/
GTG22.slide
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
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Golang 安裝與環境設定
為什麼我要學習 Go
19:30 28 Mar 2017
Tags: Golang, Environment Setup, 線上 go 讀書會
陳敬翔
中華電信, IaaS 服務專員
oneleo@cht.com.tw
https://www.facebook.com/oneleo760823
@oneleo760823
# --------------------------------------------------
* About me
.image ./images/Sean.jpg 250 250
- 中華電信從研發替代役到正式職員
- 大學時受 C 影響最深
- 覺得物聯網時代,沒有學個可支撐大數據的後端會被淘汰(能用此創業就太棒了!)
- 起先是從[[https://www.facebook.com/groups/1606498833013546/][線上 Unity 讀書會]]切入(因為呈現上要有個漂亮的、跨平台的前端)
- 接著開始找尋適合自己的後端語言(無論 JavaScript 還是 Go 對我來說都是重頭學)
# --------------------------------------------------
* 為什麼想學 Go
# --------------------------------------------------
* 為什麼想學 Go?(1/3)
- 爽度 V.S. 效能
- 除了效能外,打扣時爽度也很重要!
.image ./images/go-fast.png 401 600
.link https://talks.golang.org/2014/gocon-tokyo.slide#28 refference: Go: 90% Perfect, 100% of the time.
# --------------------------------------------------
* 為什麼想學 GO?(2/3)
- C 語言的共同發明者 [[https://zh.wikipedia.org/wiki/%E8%82%AF%C2%B7%E6%B1%A4%E6%99%AE%E9%80%8A][Ken Thompson]] 也是 Go 創始人之一 → 原來 Go 和 C 這麼近
- 可以使用[[https://tour.golang.org/moretypes/1][簡單的指標]]
#.image ./images/Ken_Thompson.jpg
- 大陸百大企業[[https://www.qiniu.com/][七牛雲存儲]]全面改用 [[http://blog.qiniu.com/archives/113][Go 語言]]:「[[http://blog.csdn.net/turingbooks/article/details/7863317][Go 有望成為互聯網時代的 C 語言。]]」
- NPM 開源貢獻值最高 [[https://github.com/tj][TJ Holowaychuk]] 決定從 [[https://www.zhihu.com/question/24373004][Node.JS 轉向 Go]]
- [[https://devfest-taipei-3cbee.firebaseapp.com/schedule/day1?sessionId=108][2016-12-03 Google Taipei 開發者嘉年華]]時受 [[http://www.evanlin.com/][Evan Lin 大]]啟蒙
.image ./images/letsgo.jpg 283 450
# --------------------------------------------------
* 為什麼想學 GO?(3/3)
- [[http://127.0.0.1:3999/GTG22.slide#8][【Page. 08】]]存檔時自動排版(gofmt)
- [[http://127.0.0.1:3999/GTG22.slide#10][【Page. 10】]]每列句尾不需用分號結束
- [[http://127.0.0.1:3999/GTG22.slide#11][【Page. 11】]]內建說明文件產生器(godoc)
- [[http://127.0.0.1:3999/GTG22.slide#12][【Page. 12】]]內建 Testing 工具(go test)
- [[http://127.0.0.1:3999/GTG22.slide#13][【Page. 13】]]可撰寫投影片(present)
- [[http://127.0.0.1:3999/GTG22.slide#18][【Page. 18】]]可撰寫手機 APP(gomobile)✔
- [[http://127.0.0.1:3999/GTG22.slide#26][【Page. 26】]]可將 C 語言嵌入到 Go 裡頭(cgo)✔
- [[http://127.0.0.1:3999/GTG22.slide#29][【Page. 29】]]可控制微處理器周邊如 LED、馬達、按鈕等物件(gobot)✔
- 參考影片:2017/02/14[[https://youtu.be/AthOhhD0T6g][【線上讀書會】Golang 環境設定與安裝]]
# --------------------------------------------------
* Golang 閃電展示時間
# --------------------------------------------------
* 使用 IDE 存檔時自動排版(1/2)
- 因為自動排版,所以使用的 space 和 tab 鍵最少(嚴格上只有 tab 鍵)
- 因為自動排版,所以團隊能量可集中在解決問題上 → 而不是看別人程式碼看到火大
.image ./images/tab.jpg 400 608
.link https://medium.com/@hoffa/400-000-github-repositories-1-billion-files-14-terabytes-of-code-spaces-or-tabs-7cfe0b5dd7fd#.z07eb1yuf refference: Medium @Hoffa
# --------------------------------------------------
* 使用 IDE 存檔時自動排版(2/2)
- 存檔時自動排版:[[https://play.golang.org/p/uUANEh970a][線上 Demo]]
- 直接執行排版指令(這邊以排版 layoutTest.go 為例)
Windows: > cd "%USERPROFILE%\GoDr\Go\02. Go Present"
MacBook: $ cd "$HOME/GoDr/Go/02. Go Present"
$> go fmt layoutTest.go
.image ./images/GoFmtDemo.png 371 400
# --------------------------------------------------
* 程式每列句尾不需使用分號結束
- PTT 鄉民自嘲:程式寫的好,要飯要到老(這是玩笑話)
- debug 時就是當局者迷,常常會忘了最基本的結尾
- 但,至少寫 Golang 可以少 de 一種 bug…
.image ./images/gofmt2.png 331 1000
# --------------------------------------------------
* 內建說明文件產生器:使用 Fmt Package 為例:
- 將 fmt 複製到【%USERPROFILE%\go\src】or【$HOME/go/src】內
Windows: > xcopy /I "c:\go\src\fmt" "%USERPROFILE%\go\src\MyFmt"
MacBook: $ cp -p -r "/usr/local/go/src/fmt" "$HOME/go/src/MyFmt"
- 修改某 function 前面的註解(這邊以修改 func Errorf 前方的註解為例)
Windows: 用記事本修改 "%USERPROFILE%\go\src\MyFmt\print.go"
MacBook: $ vim "$HOME/go/src/MyFmt/print.go"
- 執行 GoDoc 指令
$> godoc -http=:6060
- 至瀏覽器【http://localhost:6060】點選右上方【Packages】搜尋 MyFmt 即可
# --------------------------------------------------
* 內建重要的 Testing 工具(go test)
Windows: > cd "%USERPROFILE%\GoDr\Go\02. Go Present"
MacBook: $ cd "$HOME/GoDr/Go/02. Go Present"
$> go test ./codeTest/tenPow_test.go ./codeTest/tenPow.go
- tenPow.go
.code ./codeTest/tenPow.go /OMIT START/,/OMIT END/
- tenPow_test.go
.code ./codeTest/tenPow_test.go /OMIT START/,/OMIT END/
# --------------------------------------------------
* 使用 Go 撰寫投影片(1/5)
- Go present [[https://godoc.org/golang.org/x/tools/present/][官網說明文件]]
- 安裝 go present
$> go get -u -v golang.org/x/tools/cmd/present
$> go install golang.org/x/tools/cmd/present
- 執行 present 指令
Windows: > cd "%USERPROFILE%\GoDr\Go\02. Go Present"
MacBook: $ cd "$HOME/GoDr/Go/02. Go Present"
$> present
- 至瀏覽器【[[http://127.0.0.1:3999][http://127.0.0.1:3999]]】點選【xxx.slide】進行投影片投放
# --------------------------------------------------
* 使用 Go 撰寫投影片(2/5)
- Go present 可投放 Go 程式(甚至可直接編輯)
.play -edit ./codePresent/hello.go /OMIT START/,/OMIT END/
# --------------------------------------------------
* 使用 Go 撰寫投影片(3/5)
- 還可透過 Go 嵌入程式直接在投影片中建立小型 http 伺服器
- 註:只能在 [[http://127.0.0.1:3999/GTG22.slide#15][http://127.0.0.1:3999/]] 中執行,原因後述
.play -edit ./codePresent/http.go /OMIT START/,/OMIT END/
# --------------------------------------------------
* 使用 Go 撰寫投影片(4/5)
- 將 Go 投影片 Push 至 GitHub 上,可透過 [[http://go-talks.appspot.com/][http://go-talks.appspot.com/]] 來投放
- 假設投影片放在 GitHub 上:
.link https://github.com/Starfine/02.-Go-Present/blob/master/GTG22.slide https://【github.com/Starfine/02.-Go-Present】/blob/master【/GTG22.slide】
- 只需將前方網址改成:
【http://go-talks.appspot.com/】
+【github.com/Starfine/02.-Go-Present】
+【/GTG22.slide】
→ [[http://go-talks.appspot.com/github.com/Starfine/02.-Go-Present/GTG22.slide][http://go-talks.appspot.com/github.com/Starfine/02.-Go-Present/GTG22.slide]]
# --------------------------------------------------
* 使用 Go 撰寫投影片(5/5)
- 注意事項 1:請使用 [[http://127.0.0.1:3999/GTG22.slide#14][http://127.0.0.1:3999]] 來連,用 [[http://localhost:3999/GTG22.slide#14][http://localhost:3999]] 來連投影片中的嵌入程式會跑不出來
- 注意事項 2:將 Go 投影片更新至 GitHub 上,在使用 [[http://go-talks.appspot.com/github.com/Starfine/02.-Go-Present/GTG22.slide][http://go-talks.appspot.com]] 來投放投影片前需等待一段時間才會更新
- 注意事項 3:因 [[http://go-talks.appspot.com/github.com/Starfine/02.-Go-Present/GTG22.slide#15][http://go-talks.appspot.com]] 會擋 http port,所以執行投影片中的嵌入程式若有使用 net/http package 的程式會執行失敗,解決辦法為使用本地端 [[http://127.0.0.1:3999/GTG22.slide#15][http://127.0.0.1:3999]] 來投放
- 注意事項 4:因 [[http://go-talks.appspot.com/github.com/Starfine/02.-Go-Present/GTG22.slide#25][http://go-talks.appspot.com]] 沒有建立 GCC 編譯環境,所以執行投影片中的嵌入程式若有使用 cgo 的程式會執行失敗,解決辦法為使用已安裝好 GCC 環境的本地端 [[http://127.0.0.1:3999/GTG22.slide#25][http://127.0.0.1:3999]] 來投放
# --------------------------------------------------
* 使用 Go Mobile 開發手機 APP(1/7)
- 開發環境需可編譯 C/C++ 語言(要安裝 GCC 編譯套件)
- 若要編譯 Android APP,要安裝 [[https://developer.android.com/studio][SDK]]、[[http://www.oracle.com/technetwork/java/javase/downloads][JDK]]、[[https://developer.android.com/ndk/downloads][NDK]],才可將 Go 語言編譯成 apk 檔
- JNI 可視為 JAVA 與 C/C++ 橋樑,NDK 則可將 JAVA、C/C++ 程式打包成單一 apk 檔
.image ./images/HowGoMobileWorks.jpg 338 600
.link http://www.slideshare.net/takuyaueda967/go-for-mobile-games refference: Go for Mobile Game
# --------------------------------------------------
* 使用 Go Mobile 開發手機 APP(2/7)
---------------------------------------- Windows only ----------------------------------------
- Windows 要特別注意 SDK、JDK、NDK 環境變數的設置(請參考本頁說明)
- 1、[[https://developer.android.com/ndk/downloads][NDK 下載]]後解壓縮並放在 %USERPROFILE%\AppData\Local\Android 內
- 2、為保彈性,將 JDK、NDK 建立捷徑後再設定 Windows 的環境變數,指令如下:
> mklink /D /J "%USERPROFILE%\AppData\Local\Android\ndk"
"%USERPROFILE%\AppData\Local\Android\android-ndk-r14"
> mklink /D /J "C:\Program Files\Java\jdk" "C:\Program Files\Java\jdk1.8.0_121"
- 3、設定 Windows 環境變數(要永久生效請至「系統」→「進階系統設定」→「環境變數」→「使用者變數」內設定)。
> set JAVA_HOME="C:\Program Files\Java\jdk"
> set ANDROID_SDK_HOME="%USERPROFILE%\AppData\Local\Android\sdk"
> set ANDROID_NDK_HOME="%USERPROFILE%\AppData\Local\Android\ndk"
> set PATH=%PATH%;%JAVA_HOME%\bin;%ANDROID_SDK_HOME%\build-tools;%ANDROID_SDK_HOME%\platform-tools
> set PATH=%PATH%;%ANDROID_SDK_HOME%\tools;%ANDROID_NDK_HOME%
# --------------------------------------------------
* 使用 Go Mobile 開發手機 APP(3/7)
---------------------------------------- MacBook only ----------------------------------------
- MacBook 要特別注意 SDK、JDK、NDK 環境變數的設置(請參考本頁說明)
- 1、[[https://developer.android.com/ndk/downloads][NDK 下載]]後解壓縮並放在 $HOME/Library/Android/ 內
- 2、為保彈性,將 NDK 建立捷徑後再設定 MacBook 的環境變數,指令如下:
$ ln -s "$HOME/Library/Android/android-ndk-r14" "$HOME/Library/Android/ndk"
$ vim $HOME/.bash_profile
- 3、要永久生效請編輯(或建立)"$HOME/.bash_profile" 檔,加入下方指令,存檔後使用 source 指令執行之,才會生效。
.code ./codePresent/.bash_profile(Android)
$ source "$HOME/.bash_profile"
# --------------------------------------------------
* 使用 Go Mobile 開發手機 APP(4/7)
---------------------------------------- Windows only ----------------------------------------
- 1、安裝 GCC 編譯套件,請下載 [[http://tdm-gcc.tdragon.net/download][TDM-GCC]] 並安裝
- 註:Windows 欲執行 GoMobile 範例,在 GoMobile 套件下載後([[http://127.0.0.1:3999/GTG22.slide#22][Page 22]]),還要下載 GoMobile 相依套件(使用[[https://github.com/golang/dep][dep]]),指令如下:
#> go get -u -v golang.org/x/exp/shiny/driver/gldriver
#> go get -u -v golang.org/x/exp/shiny/screen
> go get -u -v github.com/golang/dep/...
> cd "%USERPROFILE%\go\src\golang.org\x\mobile\example\"
> dep init -v
---------------------------------------- MacBook only ----------------------------------------
- 1、安裝 GCC 編譯套件,MacBook 裡請下載 [[https://itunes.apple.com/tw/app/xcode/id497799835?l=zh&mt=12][Xcode]] 並安裝,即建立好 GCC 環境
---------------------------------------- Windows & MacBook both ----------------------------------------
- 1、安裝完成 GCC 後請使用下面指令確認
$> gcc --version
# --------------------------------------------------
* 使用 Go Mobile 開發手機 APP(5/7)
- Go Mobile [[https://godoc.org/golang.org/x/mobile/cmd/gomobile][官網連結]]
- 1、下載 GoMobile
$> go get -u -v golang.org/x/mobile/cmd/gomobile
- 2、安裝 GoMobile 編譯工具
Windows: > gomobile init -v
MacBook: $ gomobile init -v -ndk "$ANDROID_NDK_HOME"
- 註:查看接在電腦上的 Android 設備(adb 相關指令可[[http://style77125tech.pixnet.net/blog/post/17556680-%5Bandroid%5D-%E4%BD%BF%E7%94%A8adb%E6%8C%87%E4%BB%A4][參考這篇]])
$> adb devices # 查詢目前有多少個 Android 裝置
$> adb kill-server # 若無法查詢則關掉 adb 伺服器再試一次
$> adb help # 顯示 adb 指令相關參數
# --------------------------------------------------
* 使用 Go Mobile 開發手機 APP(6/7)
- 在本機執行測試(Basic Example)
Windows: > cd "%USERPROFILE%\go\src\golang.org\x\mobile\example\basic"
MacBook: $ cd "$HOME/go/src/golang.org/x/mobile/example/basic"
$> go run main.go
- 輸出成可安裝至 Android 手機內的 apk 檔
Windows: > gomobile build -target "android"
-o "%USERPROFILE%\go\src\golang.org\x\mobile\example\basic\basic.apk"
golang.org/x/mobile/example/basic
# > gomobile build -target "android" -o "%USERPROFILE%\go\src\golang.org\x\mobile\example\basic\basic.apk" golang.org/x/mobile/example/basic
MacBook: $ gomobile build -target "android"
-o "$HOME/go/src/golang.org/x/mobile/example/basic/basic.apk"
golang.org/x/mobile/example/basic
# $ gomobile build -target "android" -o "$HOME/go/src/golang.org/x/mobile/example/basic/basic.apk" golang.org/x/mobile/example/basic
- 或將 apk 檔直接安裝在與之連接的 Android 手機
$> gomobile install golang.org/x/mobile/example/basic
$> gomobile install golang.org/x/mobile/example/flappy
# --------------------------------------------------
* 使用 Go Mobile 開發手機 APP(7/7)
- 防爆展示影片,環境為 Windows
.video ./videos/GoMobileFlappyDemo.mp4 video/mp4 425 _
# --------------------------------------------------
* 附錄:如何將 Android 手機畫面投放至 Google Chrome?
- 參考:電腦玩物部落格
.link http://www.playpcesor.com/2015/09/android-vysor.html Android 畫面操作投影電腦! Vysor 簡報鏡射新神器
- 在 Google Chrome 安裝 Vysor 擴充套件
.link https://chrome.google.com/webstore/detail/vysor-beta/gidgenkbbabolejbgbpnhbimgjbffefm Vysor 擴充套件下載點
- Android 手機要開啟 USB debugging 功能(開發人員選項)
.image ./images/AndroidUSBDebugging.png 320 180
# --------------------------------------------------
* 可將 C 語言嵌入到 Go 裡頭(1/3)
- 注意事項 1:在 Windows 或 MacBook 均需要安裝 GCC 編譯套裝,請參考 [[http://127.0.0.1:3999/GTG22.slide#21][第 21 頁]]。安裝完成後請在所屬命令列中輸入下面指令確定己完成安裝
$> gcc --version
- 注意事項 2:使用 cgo 關鍵語句【import "C"】上方不可以有其他空白列。
package main
/*
…
// C code here.
…
*/
import "C" // 注意:此語句上方不能有其他空白列
func main() {
…
}
# --------------------------------------------------
* 可將 C 語言嵌入到 Go 裡頭(2/3)
- 用 C 寫一個米字金字塔
.play -edit ./codePresent/cgo.go /OMIT START/,/OMIT END/
# --------------------------------------------------
* 可將 C 語言嵌入到 Go 裡頭(3/3)
- 編譯程式
Windows: > go build -o "%USERPROFILE%\GoDr\Go\02. Go Present\codePresent\cgo.exe" "%USERPROFILE%\GoDr\Go\02. Go Present\codePresent\cgo.go"
MacBook: $ go build -o "$HOME/GoDr/Go/02. Go Present/codePresent/cgo" "$HOME/GoDr/Go/02. Go Present/codePresent/cgo.go"
- 執行編譯好的程式
Windows: > . "%USERPROFILE%\GoDr\Go\02. Go Present\codePresent\cgo.exe"
MacBook: $ "$HOME/GoDr/Go/02. Go Present/codePresent/cgo"
- 或直接使用 $> go run 指令執行
Windows: > go run "%USERPROFILE%\GoDr\Go\02. Go Present\codePresent\cgo.go"
MacBook: $ go run "$HOME/GoDr/Go/02. Go Present/codePresent/cgo.go"
## --------------------------------------------------
#
#* 可控制微處理器周邊如 LED、馬達、按鈕等物件(暫未完成)(1/2)
#
#- GoBot [[https://gobot.io/][官方網站]]
#
#- 下載 GoBot
# $ go get -d -u -v gobot.io/x/gobot/...
#
#- 安裝開發板平台(這邊以 Raspberry Pi 為例)
# $ go install gobot.io/x/gobot/platforms/raspi
#
#- 至 Raspberry Pi 內建立資料夾(Windows 請用 [[http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html][Putty]]、[[https://sites.google.com/view/pietty-project/download][Pietty]] 進行 SSH 連線)
# $ ssh pi@192.168.xxx.xxx
# $$ mkdir -p "$HOME/go/src/gobot.io/x/gobot/examples/"
# $$ exit
#
## --------------------------------------------------
#
#* 可控制微處理器周邊如 LED、馬達、按鈕等物件(暫未完成)(2/2)
#
#- 將 GoBot 範例編譯成可供 Raspberry Pi 執行的檔案
# $ GOARM=7 GOARCH=arm GOOS=linux go build
# -o "$HOME/go/src/gobot.io/x/gobot/examples/raspi_blink"
# $HOME/go/src/gobot.io/x/gobot/examples/raspi_blink.go
## $ GOARM=7 GOARCH=arm GOOS=linux go build -o "$HOME/go/src/gobot.io/x/gobot/examples/raspi_blink" $HOME/go/src/gobot.io/x/gobot/examples/raspi_blink.go
#
#- 將編譯完成的可執行檔複製到 Raspberry Pi 內
# $ scp -p "$HOME/go/src/gobot.io/x/gobot/examples/raspi_blink"
# pi@192.168.xxx.xxx:"$HOME/go/src/gobot.io/x/gobot/examples/raspi_blink"
## $ scp -p "$HOME/go/src/gobot.io/x/gobot/examples/raspi_blink" pi@192.168.xxx.xxx:"$HOME/go/src/gobot.io/x/gobot/examples/raspi_blink"
#
#- SSH 至 Raspberry Pi 內執行檔案
# $ ssh pi@192.168.xxx.xxx
# $$ sudo "$HOME/go/src/gobot.io/x/gobot/examples/raspi_blink"
#
#- 未來解決方向:測試其他的 GARCH 參數。參數參考:[[https://golang.org/doc/install/source#environment][GoEnv]]
#
#- 經過實測,要使用官網所提供的 https://github.com/sarfata/pi-blaster 來進行設定,但是仍有缺點,因為用此方法會無法讓 LED 暗下來
#
# --------------------------------------------------
* 可控制微處理器周邊如 LED、馬達、按鈕等物件(Arduino)(1/5)
- 本處範例僅適用於 MacBook,Windows 建議可用 [[https://store.docker.com/editions/community/docker-ce-desktop-windows][Docker]] 處理
# - Arduino [[https://www.arduino.cc/][官方網站參考]](專屬 IDE [[https://www.arduino.cc/en/guide/Windows?setlang=cn][for Windows]]、[[https://www.arduino.cc/en/guide/macOSX?setlang=cn][for MacBook]])
- 安裝 MacBook 套件安裝工具 [[https://brew.sh/index_zh-tw.html][Homebrew]]
$ /usr/bin/ruby -e
"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 使用 Homebrew 安裝微控器硬體掃描及韌體上傳工具 [[http://gort.io/][GORT]]
$ brew install hybridgroup/tools/gort
- 掃描接在 MacBook 上的 USB 裝置(本例 tty.usbmodem14241 為 Arduino)
$ gort scan serial
/dev/tty.Bluetooth-Incoming-Port /dev/tty.usbmodem14241
$ gort arduino install
- 將 Arduino 接上 MacBook 後執行下列指令
$ gort arduino upload firmata /dev/tty.usbmodem14241
# --------------------------------------------------
* 可控制微處理器周邊如 LED、馬達、按鈕等物件(Arduino)(2/5)
- GoBot [[https://gobot.io/][官方網站]]
- 下載 GoBot
$ go get -d -u -v gobot.io/x/gobot/...
- 安裝 Arduino GoLang 開發環境
$ go install gobot.io/x/gobot/platforms/firmata
- 註:GoBot for Arduino 常用 API 連結參考:
- 1. [[https://gowalker.org/gobot.io/x/gobot][gobot.io/x/gobot]]
- 2. [[https://gowalker.org/gobot.io/x/gobot/drivers/gpio][gobot.io/x/gobot/drivers/gpio]]
- 3. [[https://gowalker.org/gobot.io/x/gobot/platforms/firmata][gobot.io/x/gobot/platforms/firmata]]
# --------------------------------------------------
* 可控制微處理器周邊如 LED、馬達、按鈕等物件(Arduino)(3/5)
- 讓 Arduino 內建的 13 號燈閃爍
$ go build -o "$HOME/go/src/gobot.io/x/gobot/examples/firmata_blink"
"$HOME/go/src/gobot.io/x/gobot/examples/firmata_blink.go"
$ "$HOME/go/src/gobot.io/x/gobot/examples/firmata_blink"
- 改寫 GoBot 內建程式碼
$ sudo cp -p "$HOME/go/src/gobot.io/x/gobot/examples/firmata_blink.go"
"$HOME/go/src/gobot.io/x/gobot/examples/firmata_my_blink.go"
$ sudo vim "$HOME/go/src/gobot.io/x/gobot/examples/firmata_my_blink.go"
- 改寫的內容請參考 [[https://github.com/Starfine/02.-Go-Present/blob/master/GoBotDemo/firmata_my_blink.go][./GoBotDemo/firmata_my_blink.go]]
.code -edit ./GoBotDemo/firmata_my_blink.go /OMIT START/,/OMIT END/
# --------------------------------------------------
* 可控制微處理器周邊如 LED、馬達、按鈕等物件(Arduino)(4/5)
- 執行改寫後的程式碼
$ go build -o "$HOME/go/src/gobot.io/x/gobot/examples/firmata_my_blink"
"$HOME/go/src/gobot.io/x/gobot/examples/firmata_my_blink.go"
$ "$HOME/go/src/gobot.io/x/gobot/examples/firmata_my_blink"
.video ./videos/ControlArduinoWithGoBot.mp4 video/mp4 375 _
# --------------------------------------------------
* 可控制微處理器周邊如 LED、馬達、按鈕等物件(Arduino)(5/5)
- 可以用 GoBot 簡單達到應用可能有:
- 1、用 Line Facebook Bot 控制家電
- 2、網站人次輸出至四位元七段顯示器
- 3、將訪客推文打到 LED 矩陣看板
- 4、爬蟲後的溫溼度顯示至 LED 矩陣看板
# --------------------------------------------------
* 附錄:Golang 的環境變數說明
- 參考:[[http://wiki.jikexueyuan.com/project/go-command-tutorial/0.14.html][Go 命令教程 - 標準命令詳解]]
- 可使用 _$>_ _go_ _env_ 指令來顯示所有 Go 相關的環境變數
名稱 說明
CGO_ENABLED 是否開啟 cgo 工具。
GOARCH 編譯程式時指定的作業系統。
GOBIN 可執行檔的路徑。即執行 go tool install 指令時的安裝位置。
GOCHAR 編譯程式時指定作業系統的架構。例 386 架構為 8、AMD64 架構為 6。
GOEXE 編譯出可執行檔的副檔名。
GOHOSTARCH 程式執行時的目標作業系統架構,為一常數。
GOOS 程序構建環境的目標操作系統。
GOHOSTOS 程式執行時的目標作業系統,為一常數。
GOPATH 使用者工作目錄路徑。
GORACE 用於平行計算時數據是否有衝突的檢測選項。
GOROOT Go 語言的安裝目錄。
GOTOOLDIR Go Tool 的存放目錄。其值為 $GOROOT/pkg/tool/$GOOS_$GOARCH。
- 註:若想在 Raspberry Pi 上跑 Go,[[https://www.reddit.com/r/golang/comments/5o17c8/go_18_performance_improvements_on_arm_raspi/][效能可參考此連結]](感謝 [[https://blog.wu-boy.com/][Bo-Yi Wu 大大]]熱心提供)
# - 註:Bo-Yi Wu 大大 [[https://www.facebook.com/appleboy46][Facebook]]
# --------------------------------------------------
* 建立 Go 開發環境
# --------------------------------------------------
* 建立 Go 開發環境(以下 Windows & MacBook 均適用)
- 安裝 [[https://golang.org/][Go]] 官方安裝程式
- 「go get -u -v」套件下載指令需搭配 [[https://git-scm.com/downloads][Git]] 軟體,或已擁有 [[https://github.com/][GitHub]] 或 [[https://bitbucket.org][BitBucket]] 帳號的網友強力推薦安裝 [[https://www.sourcetreeapp.com/][SourceTree]](登入才會自動安裝 Git Command Line 工具)
- 設定環境變數(即將於 [[https://talks.golang.org/2017/state-of-go.slide#19][Go 1.8 版]]變為自動設置)
MacBook:$HOME/go
Windows:%USERPROFILE%\go
- 安裝 IDE with Go [[https://code.visualstudio.com/][Visual Studio Code]](自訂,但建議安裝)
- P.S.:自從聽到:默司大主講的「好的 IDE 帶你上天堂」 [[https://youtu.be/rsaqfyDLzQM][Part 1]] [[https://youtu.be/zGqICko2_uo][Part 2]] ,就從 Notepad + Cmd 轉到 Visual Studio Code 的行列
- P.S.:有在開發 Unity3D 的大大也可以使用 VSCode 取代內建的 MonoDevelop 或 VS2015
# --------------------------------------------------
* 設定 Go 1.7.5 版之前的環境變數 for Windows(1/2)
- 安裝程式會在安裝完成後,預設會加入兩項 Windows「系統變數」,即可使用 Go 指令
> set GOROOT=C:\Go\
> set PATH=%PATH%;C:\Go\bin
- 我們還需要另外設置「工作目錄」至 Windows 使用者變數內(永久設置請至「系統」→「進階系統設定」→「環境變數」→「使用者變數」內設定)。工作目錄可自行定義但一定要設置。另外往後透過「go get -u -v」下載的套件均存放在 %GOPATH%\src 裡。
> set GOPATH=%USERPROFILE%\work
> set PATH=%PATH%;%GOPATH%\bin
.image ./images/Environment_01.png _ 600
# --------------------------------------------------
* 設定 Go 1.7.5 版之前的環境變數 for Windows(2/2)
- 測試是否設定完成
> echo %GOPATH%
> echo %PATH%
.image ./images/Environment_03.png
# --------------------------------------------------
* 設定 Go 1.7.5 版之前的環境變數 for MacBook(1/2)
- 安裝程式會在安裝完成後,預設會加入一項環境變數,即可以使用 Go 指令
$ export PATH="$PATH:/usr/local/go/bin"
- 我們還需要另外設置「工作目錄」至 MacBook 使用者變數內(永久設置請將指令設定至 $HOME/.bash_profile 裡,並執行 $ source $HOME/.bash_profile 指令讓其生效)。工作目錄可自行定義但一定要設置。另外往後透過「go get -u -v」下載的套件均存放在 $GOPATH/src 裡
$ export GOPATH="$HOME/work"
$ export PATH="$PATH:$GOPATH/bin"
.image ./images/Environment_06.png 279 550
# --------------------------------------------------
* 設定 Go 1.7.5 版之前的環境變數 for MacBook(2/2)
- 測試是否設定完成
$ echo $GOPATH
$ echo $PATH
.image ./images/Environment_07.png
# --------------------------------------------------
* 設定 Go 1.8 版的環境變數
- 雖然不用設置 GOPATH 變數,但仍要將工作目錄內的 bin 目錄加到 PATH 變數中
- Windows 請至「系統」→「進階系統設定」→「環境變數」→「使用者變數」內設定
> set PATH=%PATH%;%USERPROFILE%\go\bin
- 測試是否設定完成
> echo %PATH%
- MacBook 請將下方指令設定至 「$HOME/.bash_profile」 裡,再執行【$ source $HOME/.bash_profile】指令使其生效
$ export PATH="$PATH:$HOME/go/bin"
- 測試是否設定完成
$ echo $PATH
# --------------------------------------------------
* 附錄:如何查看 Windows or MacBook 的環境變數?
- 註 1:如何察看 MacBook 內的環境變數
$ printenv
- 註 2:MacBook 環境變數設定檔執行順序:
1. "/etc/profile"
2. "/etc/paths"
3. "$HOME/.bash_profile"
4. "$HOME/.bash_login"
5. "$HOME/.profile"
6. "$HOME/.bashrc"
- 註 3:如何察看 Windows 內的環境變數
> set
- 註 4:如何察看與 Go 有關的環境變數
$> go env
# --------------------------------------------------
* 使用 Visual Studio Code 來開發 Go
# --------------------------------------------------
* 使用 Visual Studio Code 來開發 Go(1/6)
- [[https://blog.golang.org/survey2016-results#TOC_4.][2016 年 Golang 官方統計]]使用 VSCode IDE 開發 Go 佔總數第二名(第一名為 Vim)
- 參考:默司大主講的「好的 IDE 帶你上天堂」二篇 [[https://youtu.be/rsaqfyDLzQM][Part 1]] [[https://youtu.be/zGqICko2_uo][Part 2]]、微軟 [[http://ow.ly/6fFL309fBoP][MVP 分享]]
- 安裝 [[https://code.visualstudio.com/][Visual Studio Code]]
- 安裝 Visual Studio Code 的 [[https://marketplace.visualstudio.com/items?itemName=lukehoban.Go][Go Extension]]
- 開啟 VSC 後鍵入 Ctrl(or Command)+ Shift + P 鍵入「Extensions: Install Extensions」→ 鍵入「Go」
- 或點選 VSC 的「View」→「Extensions」→ 鍵入「Go」
- 註:相關 VSC 快捷鍵可參考官方文件:[[https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf][Windows]]、[[https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf][MacBook]]、[[https://code.visualstudio.com/shortcuts/keyboard-shortcuts-linux.pdf][Linux]]
.image ./images/Go_for_Visual_Studio_Code.png 430 720
# --------------------------------------------------
* 使用 Visual Studio Code 來開發 Go(2/6)
- 經測試,若要啟用 VSC Go Snippets 功能仍需設置 GOPATH 環境變數
- Windows 請至「系統」→「進階系統設定」→「環境變數」內設定
> set GOPATH=%USERPROFILE%\go
- MacBook 請將下方指令設定至 $HOME/.bash_profile 裡,再執行 $ source $HOME/.bash_profile 指令使其生效
$ export GOPATH="$HOME/go"
.image ./images/GoSnippets.png 400 _
# --------------------------------------------------
* 使用 Visual Studio Code 來開發 Go(3/6)
- 安裝必要的相依套件,執行下列指令
$> go get -u -v github.com/nsf/gocode
$> go get -u -v github.com/rogpeppe/godef
$> go get -u -v github.com/zmb3/gogetdoc
$> go get -u -v github.com/golang/lint/golint
$> go get -u -v github.com/lukehoban/go-outline
$> go get -u -v sourcegraph.com/sqs/goreturns
$> go get -u -v golang.org/x/tools/cmd/gorename
$> go get -u -v github.com/tpng/gopkgs
$> go get -u -v github.com/newhook/go-symbols
$> go get -u -v golang.org/x/tools/cmd/guru
$> go get -u -v github.com/cweill/gotests/...
$> go get -u -v github.com/derekparker/delve/cmd/dlv
- 註:參數的意思 -u:強制安裝最新版本,-v:顯示安裝內容(非靜音模式)
- 註:執行 Go Package 更新
$> go clean
$> go get -u -v all
# --------------------------------------------------
* 使用 Visual Studio Code 來開發 Go(4/6)
- 來用 Visual Studio Code 來開發 Go 吧!
.image ./images/VSCDemo.png
# --------------------------------------------------
* 使用 Visual Studio Code 來開發 Go(5/6)
- 強烈建議安裝的 Visual Studio Code 套件:[[https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync][Settings Sync]]
- 開啟 VSC 後按下 Shift + Ctrl(Command)+ P → 鍵入 Extensions: Install Extensions
- [[https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync][Settings Sync]]:129,450 installs(請參考官網設定,初次使用請先執行 sync: Upload,輸入 Token 後會出現 Gist,再將 Gist 輸入即可)
.image ./images/github1.png
# --------------------------------------------------
* 使用 Visual Studio Code 來開發 Go(6/6)
- 強烈建議設置的 Visual Studio Code 使用者設定
- 開啟VSC後按下 Shift + Ctrl(Command)+ P→鍵入 Preferences: Open User Settings
// 【通用設定】
// Terminal 字型顯示大小
"terminal.integrated.fontSize": 16,
// 控制已變更檔案的自動儲存功能。接受的值: "off"、"afterDelay"、"onFocusChange" (編輯器失去焦點)、"onWindowChange" (視窗失去焦點)。如果設為 "afterDelay",您可以在 "files.autoSaveDelay" 中設定延遲。
"files.autoSave": "onFocusChange",
// 在儲存時設定檔案格式。格式器必須處於可用狀態、檔案不得自動儲存,且編輯器不得關機。
"editor.formatOnSave": true,
// 調整編輯區字型大小
"editor.fontSize": 15,
// 調整編輯區每列字數
"editor.wordWrap": "wordWrapColumn",
"editor.wordWrapColumn": 75,
// 【Go 專用設定】
// 自動插入完整的建議參數
// Complete functions with their parameter signature
"go.useCodeSnippetsOnFunctionSuggest": true,
# --------------------------------------------------
* 附件:我目前有安裝的 Visual Studio Code 套件(1/4)
- 按下 Shift + Ctrl(Command)+ P → 鍵入 Extensions: Install Extensions
- [[https://marketplace.visualstudio.com/items?itemName=moozzyk.Arduino][Arduino]]:12,839 installs
- [[https://marketplace.visualstudio.com/items?itemName=formulahendry.azure-iot-toolkit][Azure IoT Toolkit]]:2,793 installs
- [[https://marketplace.visualstudio.com/items?itemName=wcwhitehead.bootstrap-3-snippets][Bootstrap 3 Snippets]]:171,922 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools][C/C++ Preview]]:858,190 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp][C#]]:1,387,035 installs
- [[https://marketplace.visualstudio.com/items?itemName=Compulim.vscode-chinese-translation][Chinese Translation]]:723 installs
- [[https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner][Code Runner]]:183,022 installs
- [[https://marketplace.visualstudio.com/items?itemName=Unity.unity-debug][Debugger for Unity]]:40,600 installs
- [[https://marketplace.visualstudio.com/items?itemName=PeterJausovec.vscode-docker][Docker Support]]:167,299 installs
# --------------------------------------------------
* 附件:我目前有安裝的 Visual Studio Code 套件(2/4)
- [[https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint][ESLint]]:568,766 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-devlabs.extension-manifest-editor][Extension Manifest Editor]]:1,916 installs
- [[https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory][Git History (git log)]]:233,290 installs
- [[https://marketplace.visualstudio.com/items?itemName=lukehoban.Go][Go]]:356,997 installs
- [[https://marketplace.visualstudio.com/items?itemName=jaydenlin.google-complete-me][Google Complete Me]]:2,602 installs
- [[https://marketplace.visualstudio.com/items?itemName=Zignd.html-css-class-completion][HTML CSS Class Completion]]:142,614 installs
- [[https://marketplace.visualstudio.com/items?itemName=abusaidm.html-snippets][HTML Snippets]]:348,056 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-vscode.js-atom-grammar][JavaScript Atom Grammar]]:20,340 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-vscode.jscs][JSCS Linting]]:15,597 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-vscode.typescript-javascript-grammar][Latest TypeScript and Javascript Grammar]]:47,455 installs
# --------------------------------------------------
* 附件:我目前有安裝的 Visual Studio Code 套件(3/4)
- [[https://marketplace.visualstudio.com/items?itemName=ms-vscode.latex][LaTeX Language Support]]:26,077 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-vscode.mono-debug][Mono Debug]]:67,224 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql][mssql]]:40,351 installs
- [[https://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script][npm]]:84,095 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell][PowerShell]]:275,748 installs
- [[https://marketplace.visualstudio.com/items?itemName=donjayamanne.python][Python]]:961,722 installs
- [[https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync][Settings Sync]]:129,450 installs
- [[https://marketplace.visualstudio.com/items?itemName=slevesque.shader][Shader languages support for VS Code]]:6,767 installs
- [[https://marketplace.visualstudio.com/items?itemName=seanmcbreen.Spell][Spelling and Grammar Checker]]:104,947 installs
- [[https://marketplace.visualstudio.com/items?itemName=robertohuertasm.vscode-icons][vscode-icons]]:698,778 installs
# --------------------------------------------------
* 附件:我目前有安裝的 Visual Studio Code 套件(4/4)
- [[https://marketplace.visualstudio.com/items?itemName=ms-iot.windowsiot][Windows Iot Core Extension for VS Code]]:3,386 installs
- [[https://marketplace.visualstudio.com/items?itemName=ms-vscode.wordcount][Word Count]]:6,413 installs
- 注 1:建議勿裝套件:[[https://marketplace.visualstudio.com/items?itemName=HookyQR.beautify][beautify]]:507,143 installs(經測試,此套件會和 VSC 內建的 JSON 排版對衝,導致每次存檔排版會跑掉)
- 註 2:我常用的 Visual Studio Code [[https://marketplace.visualstudio.com/search?target=VSCode&sortBy=Downloads][套件搜尋網頁]](會按照使用者下載次數進行排序)
# --------------------------------------------------
* 附件:我目前的 Visual Studio Code 使用者設定(1/3)
- 按下 Shift + Ctrl(Command)+ P → 鍵入 Preferences: Open User Settings
// 將您的設定放入此檔案中以覆寫預設值
{
// --------------------------------------------------
// 【通用設定】
// --------------------------------------------------
// Terminal 字型顯示大小
"terminal.integrated.fontSize": 15,
// 控制已變更檔案的自動儲存功能。接受的值: "off"、"afterDelay"、"onFocusChange" (編輯器失去焦點)、"onWindowChange" (視窗失去焦點)。如果設為 "afterDelay",您可以在 "files.autoSaveDelay" 中設定延遲。
"files.autoSave": "onFocusChange",
// 在儲存時設定檔案格式。格式器必須處於可用狀態、檔案不得自動儲存,且編輯器不得關機。
"editor.formatOnSave": true,
// 調整編輯區字型大小
"editor.fontSize": 16,
// Controls how lines should wrap. Can be:
// - 'off' (disable wrapping),
// - 'on' (viewport wrapping),
// - 'wordWrapColumn' (wrap at `editor.wordWrapColumn`) or
// - 'bounded' (wrap at minimum of viewport and `editor.wordWrapColumn`).
"editor.wordWrap": "wordWrapColumn",
// Controls the wrapping column of the editor when `editor.wordWrap` is 'wordWrapColumn' or 'bounded'.
"editor.wordWrapColumn": 75,
# --------------------------------------------------
* 附件:我目前的 Visual Studio Code 使用者設定(2/3)
// --------------------------------------------------
// 【Go 專用設定】
// --------------------------------------------------
// 自動插入完整的建議參數
// Complete functions with their parameter signature
"go.useCodeSnippetsOnFunctionSuggest": true,
// "go.gopath": "%USERPROFILE%\\go",
// "go.gopath": "$HOME/go",
// --------------------------------------------------
// 【Node.JS 專用設定】
// --------------------------------------------------
// Complete functions with their parameter signature.
"typescript.useCodeSnippetsOnMethodSuggest": true,
// --------------------------------------------------
// 【Unity 專用設定】
// --------------------------------------------------
// 控制編輯器是否顯示程式碼濾鏡
"editor.codeLens": false,
# --------------------------------------------------
* 附件:我目前的 Visual Studio Code 使用者設定(3/3)
// --------------------------------------------------
// 【Settings Sync 專用設定(套件自動設定)】
// --------------------------------------------------
"sync.gist": "ff3526b9934d3451f85ab5cdf84090ff",
"sync.lastUpload": "2017-03-15T03:22:16.680Z",
"sync.autoDownload": false,
"sync.autoUpload": false,
"sync.lastDownload": "2017-03-07T01:27:17.407Z",
"sync.version": 251,
"sync.showSummary": true,
"sync.forceDownload": true,
"sync.anonymousGist": false,
// --------------------------------------------------
// 【vscode-icons 專用設定(套件自動設定)】
// --------------------------------------------------
// Specifies the icon theme used in the workbench.
"workbench.iconTheme": "vscode-icons",
// --------------------------------------------------
// 【結尾】
// --------------------------------------------------
"": null
}
# --------------------------------------------------
* 線上學習資源
# --------------------------------------------------
* 你的好鄰居:Google 大神
- 注意:找尋相關資料時請使用關鍵字「[[https://www.google.com.tw/search?q=golang&oq=golang&aqs=chrome..69i57j69i60j69i61j69i60l3.247j0j1&sourceid=chrome&ie=UTF-8][golang]]」而非「go」
.image ./images/GoogleGolang.png 588 900
# --------------------------------------------------
* 無論你從哪裡來都歡迎一起 Go:FromXToGo(英文)
.link https://github.com/golang/go/wiki/FromXToGo
.image ./images/FromXToGo.png 716 900
# --------------------------------------------------
* 最常用的網站參考:* API 查詢與 $ 熱門 GitHub 套件搜尋
- * [[https://godoc.org/][GoDoc]]
- * [[https://gowalker.org/][GoWalker]]
- $ [[https://golanglibs.com/][GoLangLibs]]
- $ [[https://awesome-go.com/][Awesome Go]]
- $ [[https://github.com/trending/go][Trending in open source]]
- $ [[https://goreportcard.com/][Go Report Card]]
.image ./images/GoWalker.png 609 900
# --------------------------------------------------
* 免費中文資源
- [[https://www.gitbook.com/book/bingohuang/effective-go-zh-en/details][《Effective Go》]] 中英雙語電子書
- [[https://github.com/Unknwon/go-fundamental-programming][《Go 編程基礎》]] ★ 含影片教學
- [[https://github.com/Unknwon/go-web-foundation][《Go Web 基礎》]] ★ 含影片教學