1.golangç¨ä»ä¹ç¼è¾å¨ï¼
2.BoltDB源码解析(一)使用简介
3.golang用什么编辑器?
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ï¼å¼ç¨ç´æ¥../å¼ç¨ã
BoltDB源码解析(一)使用简介
BoltDB是一个纯Go语言实现的key value存储,提供库形式而非独立server进程。它是一个简单的存储系统,不支持SQL,但用户可以通过Bolt的API对key value进行增删查改。
使用BoltDB只需一个文件作为DB的商城列表源码持久化文件。与一般数据库不同,Bolt没有单独的日志文件,也不像LevelDB那样需要创建多个文件并执行Compaction。Bolt以mmap内存映射的方式打开DB文件,增删查改操作直接在内存中进行,操作系统负责磁盘和内存之间的数据传输。
Bolt支持Bucket概念,可以理解为namespace,用于分类组织不同类别的数据。用户可以创建多个Bucket来组织数据,例如在电商网站中,可以将users、orders、items数据分别放入不同的Bucket。
以下是一个示例程序,展示了BoltDB的常规操作:
bolt.Open用于传入要使用的DB文件参数,并返回一个db实例。db.Close用于关闭数据库。
db.Update的入参是一个function,这是Bolt支持transaction的方式。db.View的入参也是一个function,但transaction只能是只读的。
CreateBucketIfNotExists根据名称打开或创建Bucket。
bucket.Put(key,知乎模板源码 value)将一对key value写入Bucket,若key已存在,则用新value替换旧value。
val := bucket.Get(key)返回key对应的value,若key不存在,则返回nil。
Bolt还支持Cursor概念,用于按照key顺序遍历DB。Cursor支持prefix scan和range scan,具体介绍可参考Bolt的README。
可能有同学疑惑,Bolt似乎只能存储string类型数据,如何存储结构化数据?实际上,Bolt不关心value的结构,将其视为字节序列。我们可以将结构化数据序列化为字节序列存储在Bolt中,使用时再反序列化为结构。Go语言中的序列化反序列化方法(如JSON、Gob、Protobuffers等)均可用于此。
Bolt的基本使用介绍到此,接下来将进行源码解析。
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了,功能很全面,具备语法高亮、炒股软件 c 源码自动补全、自动编译、调试、包浏览及管理。调试器在后台使用的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,引用直接../引用。