golandè¿ç¨debugï¼
vscodeågolandè¿ç¨è¿æ¥Linuxç³»ç»
使ç¨vscodeä¸çsshè¿æ¥è¿ç¨çLinuxæºå¨æ¶ï¼vscodesshserverå¡å¨copyingvscodeservertohostwithscpãææ¶åvscodesshåå¤æ示è¾å ¥å¯ç ï¼è¿æ¯æ æ³è¿æ¥ã
vscodesshæåãç±äºvscodesshåå°ç æ¯å ¥ä¾µï¼å¯¼è´vscodesshæåï¼å æ¤å ¶è¿æ¥linuxç¯å¢åï¼ä¸è½ä½¿ç¨linuxç³»ç»ãvscodesshæ¯ä¸ç§ç½ç»åè®®ï¼ç¨äºå å¯ä¸¤å°è®¡ç®æºä¹é´çéä¿¡ï¼å¹¶ä¸æ¯æåç§èº«ä»½éªè¯æºå¶ã
æ们å å¨windows主æºä¸ä¸è½½TigerVNC软件å ãTigerVNCæ¯ä¸æ¬¾å¼æºå è´¹çVNCè¿æ¥è½¯ä»¶ï¼æ们å¯ä»¥éè¿å®å¯¹å¸¦æ¡é¢çlinux主æºè¿è¡è¿ç¨ãè¿éï¼æ们ä»SourceForgeç½ç«ä¸è½½TigerVNC软件å ã
äºä¸ªé常好ç¨çLinuxè¿ç¨è¿æ¥å·¥å ·ï¼ç¬¬ä¸æ¬¾ï¼Xshell(httpsï¼//)Xshellæ¯ä¸ä¸ªé常强大çå®å ¨ç»ç«¯æ¨¡æ软件ï¼å®æ¯æSSH1ï¼SSH2ï¼ä»¥åWindowså¹³å°çTELNETåè®®ã
golangä¸è½ä½¿ç¨debug
ç¼è¯centosä¸çå¯æ§è¡æ件çæ¶åéè¦äº¤åç¼è¯ã
debugæ¯ä¸ä¸ªè°è¯å½ä»¤ï¼æ¬æ¥å°±æ¯å¤é¨å½ä»¤ï¼ä¸æ¯å é¨å½ä»¤ãå ¨åæ¯debug.exeï¼DOSçå é¨å½ä»¤æ¯ç±Commondæä¾çï¼DOSå¯å¨æ¶ä¼å è½½å°å åä¸æ以å«å é¨å½ä»¤ã
golang空æéå¡æ»è§£å³æ¹æ³å¦ä¸ï¼åºéçä½ç½®å¨æ§è¡Excuteå½æ°å¤ï¼debugè¿æ¯æç´¢ç¾åº¦é½æ¾ä¸å°è§£å³æ¹æ¡ã解å³æ¹æ¡å°±æ¯ä¸ç¨Golandç¼è¯æ件ãç´æ¥ä½¿ç¨gobuildç¼è¯æ件åï¼åæ§è¡ï¼è®¿é®ç½é¡µå°±ä¸æ¥éäºã
Goè¯è¨å¨ç¼ºç设置ä¸ä¸ä¼ç产å¥æºè½¬å¨ãä½æ¯å½ä½ æGOTRACEBACKç¯å¢åé设置æâcrashâï¼ä½ å°±å¯ä»¥ç¨Ctrl+backslashæ触åå¥æºè½¬å¨ã
æ¹æ³ä¸ï¼å®è£ ä½ç³»ç»å°±å¯ä»¥ä½¿ç¨debugï¼å¦windowsxpçä½ãwin7çä½ãwin8çä½ãwinçä½é½å¯ä»¥ä½¿ç¨debugãæ¹æ³äºï¼å¦æä½ ä¸å®è¦ç¨ä½ç³»ç»ï¼å½ç¶ä¹å¯ä»¥ã
设置ç¯å¢åéGOPATHGOPATHçå¼å¯ä»¥æå¤ä¸ªï¼ç¨åè§åå·é´éï¼ä½ä¸è½ä»¥å ¶ç»æï¼è®¾ç½®å®æåéè¦éæ°ågomobileinitã
goè¯è¨ç¼è¾å¨golandææ ·ædebugèåä¾æ¬¡éæ©âRunâ-âEditconfigurationsâå¦ä¸å¾æ示ï¼å¨å¼¹åºç对è¯æ¡ä¸æç §å¦ä¸å¾æ示é ç½®ï¼ç¹å»âdebugâæé®ï¼å¦ä¸å¾æ示ï¼è®¾ç½®æç¹å°±å¯ä»¥å¼å§è°è¯å¦ã
è¿æ¯å 为ï¼golandå¨debugæ¶ä½¿ç¨çæ¯dlvæ件ï¼è¯¥æ件è¿ä¸æ¯æä½ç¨åºçè°è¯ï¼ç´æ¥æ§è¡runå°±å¯ä»¥äºãå¨ä½¿ç¨å½ä»¤è¡ç¼è¯goç¨åºæ¶ï¼å¯ä»¥ä½¿ç¨goenvå½ä»¤æ¥çå½åç¼è¯ç¯å¢è®¾ç½®ã
)Printï¼è¾åºå°æ§å¶å°(ä¸æ¥åä»»ä½æ ¼å¼åï¼å®çä»·äºå¯¹æ¯ä¸ä¸ªæä½æ°é½åºç¨%v)printå¨golangä¸æ¯å±äºè¾åºå°æ åé误æµä¸å¹¶æå°ï¼å®æ¹ä¸å»ºè®®åç¨åºæ¶åç¨å®ã
a.使ç¨æ¨çææ¬ç¼è¾å¨ï¼å¨fuzzç®å½ä¸å建ä¸ä¸ªå为main.goçæ件ãç¬ç«ç¨åºï¼ä¸åºç¸åï¼å§ç»ä½äºpackageä¸mainãæ¤å½æ°å°æ¥åstringï¼ä½¿ç¨byteè¿è¡å¾ªç¯ï¼å¹¶å¨æåè¿åå转çå符串ã
Linuxå¹³å°ä»¥gdb为常ç¨ãIDEèªå¸¦çè°è¯å¨ä»¥VC0为ä¾ï¼ç¼åå®ä»£ç åï¼æå¿«æªé®çFï¼å³å¯è¿å ¥è°è¯ï¼æ¤æ¶å³é®ï¼éæ©âgotodisassemblyå³å¯æ¥çå°ç¨åºçåæ±ç¼ä»£ç ãä¸è¬è¿ç§æ åµï¼ä¸»è¦æ¯ä¸ºäºå¯¹Cè¯è¨è¿è¡åæ±ç¼å¦ä¹ ã
ä½ å¨ç¼è¯å¨éé¢buildä¸ä¸ï¼ç¶åå»\bin\debugç®å½ä¸æ¾.exeexeå°±æ¯å¯æ§è¡æ件äºãè¿è¡çæ¶åå¯è½éè¦ç¨å°debugç®å½ä¸çå ¶ä»æ件(å¦é ç½®æ件ãdllç)ï¼æ以éè¦ædebugä¸çæææ件é½æ¾å°ä¸èµ·ã
goland,cgoå è½½ä½DLLéå°çé®é¢ç»è¿æç´¢çæµï¼æ¯ç®æ æºå¨æ¶æéæ©é误导è´çãä½æ¯å¨ç¯å¢é ç½®ä¸ï¼å·²ç»æ£ç¡®çéæ©äºArch为ï¼å°è¯ä½¿ç¨liteIDEæè ç´æ¥ä½¿ç¨å½ä»¤è¡ç¼è¯ï¼é½è½å¤æ£å¸¸ç¼è¯ãå¯ç¬ä½¿ç¨GoLandä¸è¡ã
å¦ä½ä½¿ç¨GoLandè°è¯beego项ç®1ãåèä¸é¢åçææ¡£è¿æ¥åå¤ä¸ä¸ªbeego项ç®ã
2ãå°æ°å»ºçBeegoDemo1ï¼å¯¼å ¥å°GOLANDä¸é ç½®gomodulesågoproxyï¼é ç½®æ¹æ³è§ï¼GOLANDä¸é ç½®GOMODULEåGOPROXYç´æ¥ç¹å»è¿è¡æéè¿beerunæ¥è¿è¡ãbeegoæ¯åºäºå «å¤§ç¬ç«ç模åä¹ä¸æ建çï¼æ¯ä¸ä¸ªé«åº¦è§£è¦çæ¡æ¶ã
3ã项ç®ç®¡çæ¹å¼ä¸ç¬¦ågoå®æ¹æ åã代ç æ示ä¸è½èªå¨å¯¼å ¥ï¼eclipseä¹ä¸è½ï¼ï¼ä¸è¿å¦æä½ ç项ç®æ¯ä»¥å 为åä½çï¼é£ä¹å¦å½å«è®ºã
4ãè¿è¡nohup./beego_projectå ³éç»ç«¯ãå¨æ¬æºæµè§å¨ä¸è¾å ¥IPå°å+端å£å·æè æå¡å¨ç½åãå°±å¯ä»¥çå°ä½ ç项ç®äºãè¿æ¯æ¬äººçä¸ä¸ªç»æ项ç®ãç»å½çç¨æ·ååå¯ç é½æ¯adminãcookiesæææ¶å¸¸ä¸ºï¼7*å°æ¶ã
5ãéå¨serviceä¸å®è£ beegoæºç åbeegoå¼åå·¥å ·Beegoå¼åå·¥å ·å¸¦æå¾å¤Beegoå½ä»¤ãæ¯å¦beegonewå建项ç®ï¼beegorunè¿è¡é¡¹ç®çãç¨beegoè¿è¡é¡¹ç®ï¼é¡¹ç®èªå¸¦çæ´æ°ã
golangç¨ä»ä¹ç¼è¾å¨ï¼
phpstormgolangå¼åç¯å¢å¦ä½é ç½®
golangæç¼è¾å¨å¯ä»¥ç¨å¦å½äººå¼åçliteide,æè sublimetextãvimãemacs,为ä»ä¹ä¸å®è¦ç¨phpstorm?å¦æä½ åªæ¯åphpå¼å,phpstormå¾ä¸é,å¦æç¨golangæ¥å¼å,phpstorm并ä¸åé
Google为ä»ä¹ä¸ç»Golangåä¸ä¸ªèªå·±çIDEï¼è°·æå ¬å¸ï¼GoogleInc.ï¼æç«äºå¹´9æ4æ¥ï¼æ¯ä¸å®¶ä½äºç¾å½çè·¨å½ç§æä¼ä¸ï¼ä¸å¡å æ¬äºèç½æç´¢ãäºè®¡ç®ã广åææ¯çï¼åæ¶å¼å并æä¾å¤§éåºäºäºèç½ç产åä¸æå¡ï¼å ¶ä¸»è¦å©æ¶¦æ¥èªäºAdWordsç广åæå¡ãå¹´ä¸åå¹´ï¼è°·æç½ç«âGoogleâæ£å¼å¯ç¨ãå¹´3ææ¥ï¼å®£å¸å ³éå¨ä¸å½å¤§éå¸åºæç´¢æå¡ãå¹´8ææ¥ï¼å®£å¸å¯¹ä¼ä¸æ¶æè¿è¡è°æ´ï¼å¹¶ååäºä¸å®¶å为Alphabetçâä¼å½¢å ¬å¸âï¼UmbrellaCompanyï¼ï¼æ为Alphabetæä¸åå ¬å¸ã
æè§å¾æ¯æ²¡æå¿ è¦çï¼å®çæä¹ä¸å¤§ã
IDEçé¾åº¦å¤§
åideä¸æ¯é£ä¹å®¹æï¼Goçæ ¸å¿å¢é人æ°ä¸å¤å¿ä¸è¿æ¥ãandroidç°å¨æ¯googleçéå¿ï¼ä¸ä¹æ²¡æä¸é¨ä»å¤´å¼åä¸æ¬¾ideä¹ãideçä¸æ¯è¿ä¹å®¹æå¼å¾ï¼å ³é®æ¯è¦è±å¤§éæ¶é´ã
Golangdeç¬ç«æ§
IDE主è¦æ¯ç®åç¨åºå¼åï¼éæå¾å¤å·¥å ·æ¹ä¾¿å¼ååè°è¯ï¼ä½æ¯ææææè¯è¨æ¬èº«é½ä¸ä¾èµIDEï¼æ以è¯è¨åIDEæ¬èº«å°±æ¯ç¬ç«çä¸¤æ ·ä¸è¥¿ï¼Googleåå¸Goè¯è¨ï¼å¹¶ä¸ä»£è¡¨ä»ä¼åå¸GoçIDEã
Googleçå¼å
è½ç¶Go没æå®æ¹IDEï¼ä½æ¯Googleåæ ·æä¾äºè®¸å¤å·¥å ·ï¼ä¾å¦GodocãGogetãGoTestãGoinstallãGoformatçï¼è¿äºå·¥å ·å·²ç»ç®åäºå¾å¤Goè¯è¨çå¼åï¼åªæ¯æ²¡æéæå°ä¸ä¸ªç¼è¾å¨éã
æä»¥è¯´å ¶å®åä¸åIDEé½æ¯æ²¡æä»ä¹å ³ç³»çã
å¦ä¹ goè¯è¨ï¼ç¨ä»ä¹IDEæ¯è¾å¥½
1ãSublimetext
è¿ä¸ªææ¬ç¼è¾å¨å¨ç¼ç¨çæ为æ®éï¼å®å¹¶éä¸ä¸ªå®å ¨æççIDEï¼ä½å®å ·å¤äºå¾å¤è¯è¨çæ©å±æ件ï¼æ¯å¦Pyhonãluaçï¼å ¶ä¸æä¸ä¸ªæ件GoSublimeä¸é¨é对Goè¯è¨ï¼æä¾äºè¯æ³é«äº®ãèªå¨è¡¥å ¨çåè½ï¼è¿äºåè½ä½¿SublimeText称为ä¸ä¸ªå¾å®ç¨çGoIDEã
2ãIntelliJ
ç±Jetbrainsæä¾ï¼å¨Javaå¼åè ä¸æ´ä¸ºæµè¡ï¼å ¶èªå¸¦çGoæ件æ¯æè¯æ³é«äº®æ¾ç¤ºã代ç è¡¥å ¨ãèªå¨ç¼è¯ä»¥åååºæ¯æï¼è¿å°±ä½¿ä½¿ç¨è å¯ä»¥å¾æ¹ä¾¿å°å°é¡¹ç®æåæå¤ä¸ªå ï¼å¯ä»¥å¨ä¸ä¸ªåç¬çIDEä¸æµè§å®ãå®æ个å¾å¥½ç¨çåè½ï¼æ件使ç¨äºçªåºæ¾ç¤ºæ¥æ¾ç¤ºæªä½¿ç¨çåéæå ã
3ãLiteIDE
ç®åä¹æ¯ä¸ä¸ªä¸é¨é对GoçIDEäºï¼åè½å¾å ¨é¢ï¼å ·å¤è¯æ³é«äº®ãèªå¨è¡¥å ¨ãèªå¨ç¼è¯ãè°è¯ãå æµè§å管çãè°è¯å¨å¨åå°ä½¿ç¨çgdbï¼è¿æ ·å¯ä»¥æ¹ä¾¿å°æå°åéå¼ãæ¥çå½åå æ ä¿¡æ¯ã
4ãIntype
æ¯ä» Windowsä¸æ¯æçææ¬ç¼è¾å¨ï¼å ·å¤æéçè¯æ³é«äº®æ¯æåç¹å®çé«äº®æ¾ç¤ºè®¾ç½®ã
5ãNetbeans
Netbeanså 建æ¯æäºå¤§éè¯è¨ï¼åæ¶å ·å¤Goæ件ï¼ä»èå¯ä»¥åå建æ£å¸¸é¡¹ç®ä¸æ ·ï¼å建Goæºæ件ï¼é¤äºè¯æ³é«äº®ä»¥å¤ï¼å ¶Goæ件并ä¸æ¯æå ¶ä»ç¹æ®åè½ï¼å¦ä½ä½¿ç¨IDEç¼è¯Goæ件è¿ä¸å¾èç¥ã
6ãEclipse
æå欢è¿çIDEï¼GoClipseæ件å¨Eclipseä¸æ·»å äºIDEåè½æ¥æ¯æGoï¼GoClipseæä¾äºå¯é ç½®çè¯æ³é«äº®æ¾ç¤ºãèªå¨ææ¡£è¡¥å ¨ãèªå¨ç¼è¯ä»¥åæéè¦çå®éªè°è¯æ¯æã
7ãTextMate
æ¯ä¸ä¸ªMacOSä¸çææ¬ç¼è¾å¨ï¼å¯æ©å±å®ä»¥çªåºæ¾ç¤ºGo代ç ï¼å¹¶æä¾æºä»£ç ç段ã
8ãKomodoEdit
æ¥èªActiveStateçå¼æºä»£ç ç¼è¾å¨ï¼åºäºMonzilla7.0ä¸æ¯æ跨平å°ï¼æ¯æå¤ç§è¯è¨ï¼ä½å è´¹ççKomodoåè½æéï¼å®çgolangæ件komodo-goæä¾äºåºæ¬çè¯æ³é«äº®ã代ç è¡¥å ¨åè½ã
Goè¯è¨ç¼è¯å¨TinyGoï¼åºäºLLVMï¼å¨å¾®æ§å¶å¨åå°ç³»ç»ä¸ç¼è¯åè¿è¡TinyGoæ¯ä¸ä¸ªä¸ºå¾®æ§å¶å¨ãWebAssembly(Wasm)åå½ä»¤è¡å·¥å ·çå°ååºæ¯è®¾è®¡çGoè¯è¨ç¼è¯å¨ãTinyGoéç¨äºGoè¯è¨å·¥å ·åLLVM使ç¨çåºï¼ä»¥ç¼è¯ç¨Goè¯è¨ç¼åçç¨åºãç®åï¼è¯¥é¡¹ç®å¨GitHubä¸å·²ç»ç§¯ç´¯äº.1kçStarã
å¦ä¸ä¸ºä¸ä¸ªç¤ºä¾ç¨åºï¼å½è¿è¡å¨ä»»ä½æ¯æç带æ¿è½½LEDç主æ¿ä¸æ¶ï¼åä¼ç¹äº®å ç½®LEDã
ä¸è¿°ç¨åºå¯ä»¥å¨åçæºãAdafruitItsyBitsyM0å¾®æ§å¶å¨æä»»ä½æ¯æç带å ç½®LEDçæ¿ä¸è¿è¡ç¼è¯åä¸éè¦ä¿®æ¹çè¿è¡ï¼åªè¦è®¾ç½®æ£ç¡®çTinyGoç¼è¯å¨ç®æ å³å¯ãä¾å¦ï¼è®¾ç½®å¦ä¸ç®æ å¯ä»¥ç¼è¯åç¹äº®åçæºã
项ç®æ¦è¿°
TinyGo项ç®æ¨å¨å°Goè¯è¨å¼å ¥å°å ·æåè¿ç¨ææ ¸å¿çå¾®æ§å¶å¨åå°ç³»ç»ãTinyGo类似äºemgoï¼ä½ä¸»è¦çåºå«å¨äºä½è æ³è¦ä¿çGoå å模åãå¦ä¸ä¸ªåºå«å¨äºTinyGoå¨å é¨ä½¿ç¨LLVMï¼å èå¯ä»¥è·å¾æ´å°æ´é«æç代ç 以åæ´é«ççµæ´»æ§ã
å建TinyGo项ç®çåè¡·æ¯ï¼å¦æPythonå¯ä»¥å¨å¾®æ§å¶å¨ä¸è¿è¡ï¼Goè¯è¨å½ç¶ä¹åºè¯¥è½å¤å¨æ´ä½çº§å¾®è®¾å¤ä¸è¿è¡ã
æ¯æ设å¤
ä½ å¯ä»¥ä¸ºå¾®æ§å¶å¨ãWebAssemblyåLinuxç¼è¯TinyGoç¨åºãç®åï¼TinyGoæ¯æ以ä¸ç§å¾®å¤çå¨æ¿ã
æ´å¤ææ¯ç»è请åé å项ç®ã
Goè¯è¨æä»ä¹å¥½ç¨çIDEåæå欢jetbrainsç³»åçIDE+goæ件ãä¸è¿æè¦è¯´çæ¯è¿ä¸ªé®é¢ä¸»è¦çä½ çè§ç¹å¦ä½ã
说eclipseï¼
æ建æ¹å¼æ¯ä½¿ç¨goinstallå½ä»¤ï¼æ¯ä¸æ¬¡ç¼è¯è¿è¡é½æ¯goinstallãè¿æ ·ç好å¤å°±æ¯å¦æä½ æå¾å¤çå ï¼ä¸è½½ä¸æ¥å¹¶æ²¡æç¼è¯ï¼è¿æ ·æ¯æ¬¡ç¼è¯é度æ¯å¾å¿«çãèä¸ï¼ï¼ï¼goinstall符ågoå®æ¹ç项ç®ç»æï¼å®æ¹è¯´è¿äºï¼ä¸ä¸ªgoç项ç®åºè¯¥æ¯ä»¥ä¸ªgopathï¼å å«srcï¼pkgï¼binä¸ä¸ªä¸»è¦ç®å½ãæ以说goinstall个人认为ææ¯ä¸»è¦çgoç¼è¯æ¹å¼ã
说eclipseç缺ç¹ï¼
å ¶å®eclipseæ件çgoç¼è¯æ¹å¼ï¼è¿æç®å½ç»æï¼é¡¹ç®ç»æï¼é½æ¯é常å®ç¾çï¼ï¼ï¼ï¼ççå¾å®ç¾ï¼å¯æ¯ï¼ä»ç代ç æ示ï¼å¤ªå·®ä»¶ï¼å¤§æ¬å·é½ä¸è½èªå¨è¡¥å ¨ï¼gdbbitbitå ¼å®¹é®é¢ï¼eclipseC++没æhtmljsæ件ï¼éè¦æå¨å®è£ ï¼å ä¹ä¸è½å¼ç®±å³ç¨ãä¸è¿å¦æä½ æ¯å¼åç®æ³ï¼æ°æ®å¤çï¼è¿æ¯æ¨èeclipseçï¼æ¯ç«å ¶ä»é½æ å ³ç´§è¦ã
说jetbrainsï¼
说å 说clioneè¯å®ä¸éåï¼æ°å»ºé¡¹ç®æ²¡æå导ï¼å¯¼è´æ¹ægo项ç®åç§ä¸å¼å¿ï¼æ¯å¦å¾æ 对äºææ¥è¯´å°±æ æ³æ¥ågolibä¸æ¯å°èå~è¿æ¯æ¬¡è¦çï¼éè¦çæ¯å个æ件é½æ¯ç°è²çï¼æ²¡æå¨cmakeä¸å å«çç»æï¼ï¼ç¶å说å©ä¸çï¼phpstormè¿ä¸ªä¸è¯´äºï¼ä¼°è®¡å¾å°æ人æ件æå¨è¿éï¼webstormï¼ä½éªä¹ä¸æ¯å¾å¥½ï¼ideaï¼ä½éªå¾å¥½ï¼å¯æ¯æ¯ç«æ¯è¾éï¼å°¤å ¶æ¯ç°å¨å å ¥äºèªå®¶çKå¥ç©æï¼æ æåç¯ï¼æ²¡è®°ä½åè¯ï¼~å¯æ¯è¯è¯´åæ¥ï¼goè·Cç³»åIDEé åææ¯æä½³ï¼è·javaç³»åä¸ç¹ä¸æå ³ç³»ï¼ç¨ideaä¼¼ä¹æç¹æ ¼æ ¼ä¸å ¥ï¼ä½æ¯ï¼ideaæ¯ææ°å»ºé¡¹ç®å导ï¼libçå¾æ ä¹å¾æ¸ æ°ï¼æåè¿æ¯éæ©ideaå§ï¼æå¾ clionç强大起æ¥ï¼
å说jetbrainsç³»å缺ç¹ï¼
æ件çæ建æ¹å¼æ¯gobuiildè¿ä¸ªè®©äººå¾ä¸ç½ï¼æ们å ä¹ä¸ç¡®å®ä¼æ建å°ä»ä¹å°æ¹å»ï¼è¿è¦æ¯æ¬¡è®¾ç½®ä¸ä¸runé ç½®ãè¿ä¸ªå¯è½æ å ³ç´§è¦ï¼æ¯ç«ä¸æ¯ä»ä¹å¤§çæ¯ç ï¼å¯æ¯gobuildä¸è½ç¼å.aæ件ï¼ç´æ¥æ建çç»æå°±æ¯å¾å¤ç¬¬ä¸æ¹å çæ åµä¸å¾æ ¢ï¼æ以建议å®è£ å çæ¶åæå¨installä¸ä¸è§£å³è¿ä¸ªé®é¢ãèªå¸¦ä»£ç æ ¼å¼åï¼è¿ä¸ªæ ¼å¼åè·goæ ¼æ ¼ä¸å ¥ï¼æ»çæ¥è¯´å°±æ¯èç¼ï¼å¿ç¢ï¼èè±çã
æå说liteIDEï¼
è½»é级IDEï¼æå¯ä»¥è¯´æ¯å½äººGOä¼å¤§ä½åå ¸èï¼ç¶èé»è®¤æ建ä¹æ¯gobuildï¼é¡¹ç®ç®¡çæ¹å¼ä¸ç¬¦ågoå®æ¹æ åã代ç æ示ä¸è½èªå¨å¯¼å ¥ï¼eclipseä¹ä¸è½ï¼ï¼ä¸è¿å¦æä½ ç项ç®æ¯ä»¥å 为åä½çï¼é£ä¹å¦å½å«è®ºãä¸å®å¾ä¸éï¼æ¯ç«æ¯è½»é级ä¸é¨é对GOçIDEï¼
说è¿äºï¼å ¶å®è¿æå¾å¤§ä¸é¨ååå³äºä½ ç项ç®æ¯ç¨vendoræºå¶ç®¡çï¼è¿æ¯godepsæºå¶ç®¡çä¾èµå ³ç³»ãgoä¸åjavaæ¥æ强大çå ä¹å¤©ä¸ä¸ç»çmavenï¼æ æåç¯ï¼æä¸è¯ä»·å ¶ä»æ建å¥ä»¶ï¼ã
go没æå®æ¹å ä»åºã
go没æå®æ¹å 管çå·¥å ·ã
go没æå®æ¹èªå¨åæ建å¥ä»¶ã
ä¸é¢ä¸ä¸ªæ²¡ææ¯è´å½è¦å®³ã导è´æ°é´åç§ç¾è±é½æ¾ã
说说æç项ç®æä¹ç®¡ç
gpmä¸ä¸ªshellå·¥å ·ï¼windowsä¸ä½ å¯ä»¥ç¨gitçbashï¼æè cygwin~ï¼
ææ¯ä¸¥æ ¼è³ç §å®æ¹æ¨èæ¹å¼ç®¡çgo项ç®ï¼ä¸ä¸ªgo项ç®ä¸ä¸ªgopathãç³»ç»çgopathåªæ¯ä¸ºäºå®è£ goå½ä»¤ï¼æ没æé ç½®gobinï¼æä¹ä¸å¤§ã
项ç®çä¾èµè·æç代ç å é½å¨srcä¸ï¼évendorï¼
vendorç¨æ¥åæ¾å çç¹æ®ä¾èµï¼åå¸é¡¹ç®ç´æ¥æä¾èµå åå¸ä¸å»ï¼å ¬ç½ç®¡çååªä¸ä¼ ä¾èµå ³ç³»æ件godepsæ件ï¼
èµæºæ件çé½æ¾å¨srcç®å½å级ï¼ç¼è¯æ件æ¾å¨binï¼å¼ç¨ç´æ¥../å¼ç¨ã
golang用什么编辑器?
phpstormgolang开发环境如何配置
golang有编辑器可以用如国人开发的liteide,或者sublimetext、vim、emacs,为什么一定要用phpstorm?如果你只是做php开发,phpstorm很不错,如果用golang来开发,phpstorm并不合适
Google为什么不给Golang做一个自己的IDE?谷歌公司(GoogleInc.)成立于年9月4日,是一家位于美国的跨国科技企业,业务包括互联网搜索、云计算、传奇竞技源码广告技术等,同时开发并提供大量基于互联网的产品与服务,其主要利润来自于AdWords等广告服务。年下半年,谷歌网站“Google”正式启用。年3月日,宣布关闭在中国大陆市场搜索服务。年8月日,宣布对企业架构进行调整,并创办了一家名为Alphabet的“伞形公司”(UmbrellaCompany),成为Alphabet旗下子公司。
我觉得是没有必要的,它的意义不大。
IDE的难度大
做ide不是那么容易,Go的核心团队人数不多忙不过来。android现在是google的重心,不也没有专门从头开发一款ide么。ide真不是mc启动源码这么容易弄得,关键是要花大量时间。
Golangde独立性
IDE主要是简化程序开发,集成很多工具方便开发和调试,但是所有所有语言本身都不依赖IDE,所以语言和IDE本身就是独立的两样东西,Google发布Go语言,并不代表他会发布Go的IDE。
Google的开发
虽然Go没有官方IDE,但是Google同样提供了许多工具,例如Godoc、Goget、GoTest、Goinstall、Goformat等,这些工具已经简化了很多Go语言的开发,只是没有集成到一个编辑器里。
所以说其实做不做IDE都是没有什么关系的。
学习go语言,用什么IDE比较好
1、Sublimetext
这个文本编辑器在编程界极为普遍,它并非一个完全成熟的IDE,但它具备了很多语言的扩展插件,比如Pyhon、游资进入源码lua等,其中有一个插件GoSublime专门针对Go语言,提供了语法高亮、自动补全等功能,这些功能使SublimeText称为一个很实用的GoIDE。
2、IntelliJ
由Jetbrains提供,在Java开发者中更为流行,其自带的Go插件支持语法高亮显示、代码补全、自动编译以及子库支持,这就使使用者可以很方便地将项目拆分成多个包,可以在一个单独的IDE中浏览它。它有个很好用的功能,插件使用了突出显示来显示未使用的变量或包。
3、LiteIDE
目前也是一个专门针对Go的IDE了,功能很全面,具备语法高亮、自动补全、自动编译、调试、包浏览及管理。京客源码调试器在后台使用的gdb,这样可以方便地打印变量值、查看当前堆栈信息。
4、Intype
是仅Windows下支持的文本编辑器,具备有限的语法高亮支持和特定的高亮显示设置。
5、Netbeans
Netbeans内建支持了大量语言,同时具备Go插件,从而可以同创建正常项目一样,创建Go源文件,除了语法高亮以外,其Go插件并不支持其他特殊功能,如何使用IDE编译Go文件还不得而知。
6、Eclipse
最受欢迎的IDE,GoClipse插件在Eclipse中添加了IDE功能来支持Go,GoClipse提供了可配置的语法高亮显示、自动文档补全、自动编译以及最重要的实验调试支持。
7、TextMate
是一个MacOS下的文本编辑器,可扩展它以突出显示Go代码,源码论坛技术并提供源代码片段。
8、KomodoEdit
来自ActiveState的开源代码编辑器,基于Monzilla7.0且支持跨平台,支持多种语言,但免费版的Komodo功能有限,它的golang插件komodo-go提供了基本的语法高亮、代码补全功能。
Go语言编译器TinyGo,基于LLVM,在微控制器和小系统上编译和运行TinyGo是一个为微控制器、WebAssembly(Wasm)和命令行工具等小型场景设计的Go语言编译器。TinyGo重用了Go语言工具和LLVM使用的库,以编译用Go语言编写的程序。目前,该项目在GitHub上已经积累了.1k的Star。
如下为一个示例程序,当运行在任何支持的带板载LED的主板上时,则会点亮内置LED。
上述程序可以在单片机、AdafruitItsyBitsyM0微控制器或任何支持的带内置LED的板上进行编译和不需要修改的运行,只要设置正确的TinyGo编译器目标即可。例如,设置如下目标可以编译和点亮单片机。
项目概述
TinyGo项目旨在将Go语言引入到具有单进程或核心的微控制器和小系统。TinyGo类似于emgo,但主要的区别在于作者想要保留Go内存模型。另一个区别在于TinyGo在内部使用LLVM,因而可以获得更小更高效的代码以及更高的灵活性。
创建TinyGo项目的初衷是,如果Python可以在微控制器上运行,Go语言当然也应该能够在更低级微设备上运行。
支持设备
你可以为微控制器、WebAssembly和Linux编译TinyGo程序。目前,TinyGo支持以下种微处理器板。
更多技术细节请参阅原项目。
Go语言有什么好用的IDE吗我喜欢jetbrains系列的IDE+go插件。不过我要说的是这个问题主要看你的观点如何。
说eclipse:
构建方式是使用goinstall命令,每一次编译运行都是goinstall。这样的好处就是如果你有很多的包,下载下来并没有编译,这样每次编译速度是很快的。而且(!)goinstall符合go官方的项目结构,官方说过了,一个go的项目应该是以个gopath,包含src,pkg,bin三个主要目录。所以说goinstall个人认为才是主要的go编译方式。
说eclipse的缺点:
其实eclipse插件的go编译方式,还有目录结构,项目结构,都是非常完美的!!!!真的很完美!可是,他的代码提示,太差件!大括号都不能自动补全,gdbbitbit兼容问题,eclipseC++没有htmljs插件,需要手动安装,几乎不能开箱即用。不过如果你是开发算法,数据处理,还是推荐eclipse的,毕竟其他都无关紧要。
说jetbrains:
说先说clione肯定不适合,新建项目没有向导,导致改成go项目各种不开心,比如图标对于我来说就无法接受golib不是小耗子~这是次要的,重要的是各个文件都是灰色的(没有在cmake中包含的结果),然后说剩下的,phpstorm这个不说了,估计很少有人插件按在这里,webstorm,体验也不是很好,idea?体验很好,可是毕竟比较重,尤其是现在加入了自家的K啥玩意(无意冒犯,没记住单词)~可是话说回来,go跟C系列IDE配合才是最佳,跟java系列一点不搭关系,用idea似乎有点格格不入,但是!idea支持新建项目向导,lib的图标也很清晰,最后还是选择idea吧,期待clion的强大起来!
再说jetbrains系列缺点:
插件的构建方式是gobuiild这个让人很不爽,我们几乎不确定会构建到什么地方去,还要每次设置一下run配置。这个可能无关紧要,毕竟不是什么大的毛病,可是gobuild不能缓存.a文件,直接构建的结果就是很多第三方包的情况下很慢!所以建议安装包的时候手动install一下解决这个问题。自带代码格式化,这个格式化跟go格格不入,总的来说就是蛋疼,心碎,菊花痒。
最后说liteIDE:
轻量级IDE,我可以说是国人GO伟大作品典范,然而默认构建也是gobuild,项目管理方式不符合go官方标准。代码提示不能自动导入(eclipse也不能),不过如果你的项目是以包为单位的,那么另当别论。一定很不错,毕竟是轻量级专门针对GO的IDE!
说这些,其实还有很大一部分取决于你的项目是用vendor机制管理,还是godeps机制管理依赖关系。go不像java拥有强大的几乎天下一统的maven(无意冒犯,暂不评价其他构建套件)。
go没有官方包仓库。
go没有官方包管理工具。
go没有官方自动化构建套件。
上面三个没有是致命要害。导致民间各种百花齐放。
说说我的项目怎么管理
gpm一个shell工具(windows下你可以用git的bash,或者cygwin~)
我是严格艳照官方推荐方式管理go项目,一个go项目一个gopath。系统的gopath只是为了安装go命令,我没有配置gobin,意义不大。
项目的依赖跟我的代码包都在src下(非vendor)
vendor用来存放包的特殊依赖,发布项目直接把依赖包发布上去(公网管理则只上传依赖关系文件godeps文件)
资源文件等都放在src目录同级,编译文件放在bin,引用直接../引用。
2024-11-20 14:32
2024-11-20 14:00
2024-11-20 13:44
2024-11-20 13:01
2024-11-20 12:40