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了,功能很全面,具备语法高亮、服务器源码和app源码下载自动补全、自动编译、调试、包浏览及管理。调试器在后台使用的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,引用直接../引用。