go语言还不成熟 go语言发展前景 知乎

安卓app主要用什么编程语言的安卓Android系统版本,开发语言是Java;
其他系统开发使用语言:
1、苹果ios系统版本,开发语言是Objective-C;
2、微软Windows phone系统版本 , 开发语言是C#;
3、塞班symbian系统版本,开发语言是C。
App开发,是指专注于手机应用软件开发与服务 。App是application的缩写,通常专指手机上的应用软件 , 或称手机客户端 。另外目前有很多在线app开发平台 。
当然移动互联网时代是全民的移动互联网时代,是每个人的时代,也是每个企业的时代 。APP便捷了每个人的生活,APP开发让每个企业都开始了移动信息化进程 。
扩展资料:
APP开发工具
MOTODEV Studio for Android
MOTODEV Studio for Android , 这是基于Android的开发环境,为开发者们提供新的MOTODEV App Accelerator Program使他们可以开发出更适合摩托罗拉Android手机的应用程序 。
J2ME开发插件 Mobile Tools for Java
Mobile Tools for Java (MTJ) 是Nokia公司开发的一款 Eclipse插件 , 用于支持 Java 手机应用程序开发 。其前身就是大名鼎鼎的 EclipseME 。
NOKIA手机开发包 gnokii
gnokii 是一个NOKIA手机开发包,可支持大多数NOKIA手机的型号 。功能无比强大可以修改LOGO,收发短信,拨打/接听电话,编辑铃声 。甚至还可以取到对方手机的蜂窝号(Cell ID),从而起到定位的作用 。
apk文件修改工具 Root Tools
RootTools是一个新的工具软件,Android开发者可以在这一工具软件的支持下,对.apk格式的文件进行再次修改,让程序表现更加出色,满足用户的需求 。Root Tools里面自带有很多工具,比如BusyBox,它里面集成压缩了很多Linux的工具和命令,这样软件开发者在对....
IDEA的Android开发插件 idea-android
idea-android 是在 IDEA 集成开发环境中开发 Android 应用程序的插件 。
Android开发工具 MOTODEV Studio
MOTODEV Studio是摩托罗拉公司开发的 Android 应用开发工具 。这是一个 Eclipse 的插件 。该插件同时也提供了 JavaME 应用的开发和 WebUI 的开发功能 。
参考资料:百度百科---app开发
为什么Java现在这么火爆?那么首先考虑的条件是不火的语言和没前途的语言是不在选择范围的 。
---因为没人用,那么库就会少 。因为库少就不会好用 。因为不好用 。所以用的人更少 。生态圈的核心思想 。
--那这个世界是不是只有C/Java了 。肯定不是 。因为有些语言是有前途的 。最大的特点是 。简化了程序员的负担 。或者效率更高 。未来肯定是主流 。
那么我们常用的语言和有前景的语言是哪些
C/C/Java/C#/Python/Ruby/Go/JavaScript Html
好 。这些是我们常用的语言 。我们看待的是怎么把这些语言一步步的踢掉 。然后只剩下Java的 。
首先踢掉的是C 。至今大型的超过10万行代码的图形化界面程序没有几个是用C的 。因为复杂的错误处理和没有纠错机制 。使得程序非常容易崩溃 。同时 。因为C没有面向对象 。那么工程化开发显得非常麻烦 。
相信没有人现在主动说 。用C开发App这种多界面程序吧 。
继续踢掉的是C# 。我干嘛要用一个一出生就为了对付Java的 。还是微软的私货的语言 。对 。Android是开源界的 。而C#注定不是适合开源界的语言 。
那我们继续踢语言:
我们该要一门重语言还是轻语言?
Java/C/C#/Go/C是重语言 。
Python/Ruby/JavaScript Html/是轻语言 。
对 。我心目中划分语言的标准基本上是属于这样的,只要在代码中体现我们需要讲效率的 。那就是重语言 。
重语言首先讲究的是运行效率 。然后讲究工程化 。
轻语言讲究开发效率,讲究敏捷性开发 。
回到我们选语言的原则 。
我们想开发一款本地App 。还在性能不高的手机上 。
那么除了C之外的开发语言中 。运行效率最高的是C,然后是Java 。
那么轻型语言就要被一个个踢掉了 。
Ruby在网页端有作为 。但是库太少 。图形库更少 , 开发者都是网页端的人 。被踢 。
JavaScript Html - ---- 这是未来大一统的趋势 。但是我们现在是找一门开发本地App的语言 。
外加真心html JavaScript有着先天的劣势 。(效率 Offline)
Python有着完善的库 。有着极高的人气社区 。在手机上开发也有过尝试 。(Nokia就干过这事 。Ubuntu Phone的UML也是一种类python的语言 。)Google也是python的大用户 。效率是问题 。但是不是绝对的 。先对Python实现保留意见 。
那么我们看这一轮入围的四门语言
Java/C/Python/Go
再说Go 。Go语言还不成熟 。库也不多 。开发者少 。但是作为Google主打的语言 。很有可能 。Google会提供基于Go的Android sdk 。至少现在Android的主打语言不会是Go 。
剩下三门
C/Python/Java
C重运行效率 。但是跨平台性较弱 。开发难度较高 。库多,用的人多 。
Python,重开发效率 。跨平台性高 。开发难度低,库多,用的人多 。
Java 。重开发效率 。不及python,重运行效率,不及C。开发难度低 。库多 。用的人多 。
那再回到需求:
Google是想要一门开发本地App的语言 。Google想屏蔽掉底层硬件的差异 。实现对于开发者来说是一个统一的平台 。
同时 。对于手机这个现阶段的平台来说 。耗电,以及性能 。是无法回避的问题 。
那么这门语言的跨平台性要求很高 。同时效率又很高 。
说Python:效率实在无法达到其普遍的手机要求 。尤其是对于图像处理这种高计算操作 。且 。社区无法与C/Java相比 。意味着库没有Java和C多,开发者不是跟Java和C一个等级的 。
说C:用过JNI的人都知道本地的C/C库,至少要编译多次 。不同的框架就代表者不同的编译环境 。而且直接用C编译运行的话 。C并不能很好的屏蔽掉硬件差异 。所以对于开发来说调试来说,都是一个比较艰巨的任务 。
C也不是一个非常好的工程化开发语言 。
那有没有破解法 。Qt 。可以用框架屏蔽掉大部分的细节操作 。Qt5.0支持Android 。
为什么没用 。估摸着是跟Qt不是Google家的产品加不开源的问题吧 。
说Java:虚拟机是核心 。因为虚拟机真正能屏蔽掉开发的很多差异 。而且通过虚拟机 。开发者只要在打包的时候翻译成运行码而不需要翻译成机器码 。通过虚拟机完成很多差异的解决 。而效率并不是丢的非常严重 。
且Java比C更受开源界和工业界的共同欢迎 。即使Java也有版权问题 。。。
我们屏蔽掉最基础的硬件差异 。通过Linux,在屏蔽掉手机的一些基本功能差异 。然后提供纯粹的利于开发者开发和测试的方法 。只有通过虚拟机了 。而这个虚拟机是需要讲性能的 。
Google搞了一个Davlik虚拟机 。对 。这就是Android的核心 。就是因为性能要求高 。不得不重新开发虚拟机 。Davlik就是一个非常讲效率的虚拟机 。而其他的常用库都有的 , 现成的 。根本就不需要自己去写的 。只要打包就好 。
为什么Java越来越火Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称 。由James Gosling和同事们共同研发,并在1995年正式推出 。
Java分为三个体系:
JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
JavaME(J2ME)(Java 2 Platform Micro Edition , java平台微型版) 。
2005年6月,JavaOne大会召开 , SUN公司公开Java SE 6 。此时,Java的各种版本已经更名以取消其中的数字"2":J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME 。
主要特性
Java语言是简单的:
Java语言的语法与C语言和C语言很接近,使得大多数程序员很容易学习和使用 。另一方面,Java丢弃了C中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换 。特别地,Java语言不使用指针,而是引用 。并提供了自动的废料收集,使得程序员不必为内存管理而担忧 。如果你想学习Java可以来这个群 , 首先是二二零,中间是一四二 , 最后是九零六,里面有大量的学习资料可以下载 。
Java语言是面向对象的:
Java语言提供类、接口和继承等原语 , 为了简单起见,只支持类之间的单继承 , 但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements) 。Java语言全面支持动态绑定,而C语言只对虚函数使用动态绑定 。总之,Java语言是一个纯的面向对象程序设计语言 。
Java语言是分布式的:
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库 , 包括URL、URLConnection、Socket、ServerSocket等 。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段 。
Java语言是健壮的:
Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证 。对指针的丢弃是Java的明智选择 。Java的安全检查机制使得Java更具健壮性 。
Java语言是安全的:
Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击 。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader) , 如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵 。
Java语言是体系结构中立的:
Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行 。这种途径适合于异构的网络环境和软件的分发 。
Java语言是可移植的:
这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度 。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的 。
Java语言是解释型的:
如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行 。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中 。
Java是高性能的:
与那些解释型的高级脚本语言相比 , Java的确是高性能的 。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C。
Java语言是多线程的:
在Java语言中,线程是一种特殊的对象 , 它必须由Thread类或其子(孙)类来创建 。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程 , 其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程 。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码 。线程的活动由一组方法来控制 。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized) 。
Java语言是动态的:
Java语言的设计目标之一是适应于动态变化的环境 。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类 。这也有利于软件的升级 。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查 。
还有我们所熟知的安卓更是促进了Java语言的发展
那么我们聊聊为什么安卓开发会用Java呢?
下面是一位来自知乎网友的回答:
首先我们需要选用一个语言来开发本地App 。
那么,我们第一步干啥了 。
在现有的语言中挑选语言 。
那么首先考虑的条件是不火的语言和没前途的语言是不在选择范围的 。
---因为没人用,那么库就会少 。因为库少就不会好用 。因为不好用 。所以用的人更少 。生态圈的核心思想 。
--那这个世界是不是只有C/Java了 。肯定不是 。因为有些语言是有前途的 。最大的特点是 。简化了程序员的负担 。或者效率更高 。未来肯定是主流 。
那么我们常用的语言和有前景的语言是哪些
C/C/Java/C#/Python/Ruby/Go/JavaScript Html
好 。这些是我们常用的语言 。我们看待的是怎么把这些语言一步步的踢掉 。然后只剩下Java的 。
首先踢掉的是C 。至今大型的超过10万行代码的图形化界面程序没有几个是用C的 。因为复杂的错误处理和没有纠错机制 。使得程序非常容易崩溃 。同时 。因为C没有面向对象 。那么工程化开发显得非常麻烦 。
相信没有人现在主动说 。用C开发App这种多界面程序吧 。
继续踢掉的是C# 。我干嘛要用一个一出生就为了对付Java的 。还是微软的私货的语言 。对 。Android是开源界的 。而C#注定不是适合开源界的语言 。
那我们继续踢语言:
我们该要一门重语言还是轻语言?
Java/C/C#/Go/C是重语言 。
Python/Ruby/JavaScript Html/是轻语言 。
对 。我心目中划分语言的标准基本上是属于这样的,只要在代码中体现我们需要讲效率的 。那就是重语言 。
重语言首先讲究的是运行效率 。然后讲究工程化 。
轻语言讲究开发效率 , 讲究敏捷性开发 。
回到我们选语言的原则 。
我们想开发一款本地App 。还在性能不高的手机上 。
那么除了C之外的开发语言中 。运行效率最高的是C,然后是Java 。
那么轻型语言就要被一个个踢掉了 。
Ruby在网页端有作为 。但是库太少 。图形库更少,开发者都是网页端的人 。被踢 。
JavaScript Html - ---- 这是未来大一统的趋势 。但是我们现在是找一门开发本地App的语言 。
外加真心html JavaScript有着先天的劣势 。(效率 Offline)
Python有着完善的库 。有着极高的人气社区 。在手机上开发也有过尝试 。(Nokia就干过这事 。Ubuntu Phone的UML也是一种类python的语言 。)Google也是python的大用户 。效率是问题 。但是不是绝对的 。先对Python实现保留意见 。
那么我们看这一轮入围的四门语言
Java/C/Python/Go
再说Go 。Go语言还不成熟 。库也不多 。开发者少 。但是作为Google主打的语言 。很有可能 。Google会提供基于Go的Android sdk 。至少现在Android的主打语言不会是Go 。
剩下三门
C/Python/Java
C重运行效率 。但是跨平台性较弱 。开发难度较高 。库多,用的人多 。
Python,重开发效率 。跨平台性高 。开发难度低,库多,用的人多 。
Java 。重开发效率 。不及python,重运行效率 , 不及C。开发难度低 。库多 。用的人多 。
那再回到需求:
Google是想要一门开发本地App的语言 。Google想屏蔽掉底层硬件的差异 。实现对于开发者来说是一个统一的平台 。
同时 。对于手机这个现阶段的平台来说 。耗电,以及性能 。是无法回避的问题 。
那么这门语言的跨平台性要求很高 。同时效率又很高 。
说Python:效率实在无法达到其普遍的手机要求 。尤其是对于图像处理这种高计算操作 。且 。社区无法与C/Java相比 。意味着库没有Java和C多,开发者不是跟Java和C一个等级的 。
说C:用过JNI的人都知道本地的C/C库,至少要编译多次 。不同的框架就代表者不同的编译环境 。而且直接用C编译运行的话 。C并不能很好的屏蔽掉硬件差异 。所以对于开发来说调试来说,都是一个比较艰巨的任务 。
C也不是一个非常好的工程化开发语言 。
那有没有破解法 。Qt 。可以用框架屏蔽掉大部分的细节操作 。Qt5.0支持Android 。
为什么没用 。估摸着是跟Qt不是Google家的产品加不开源的问题吧 。
说Java:虚拟机是核心 。因为虚拟机真正能屏蔽掉开发的很多差异 。而且通过虚拟机 。开发者只要在打包的时候翻译成运行码而不需要翻译成机器码 。通过虚拟机完成很多差异的解决 。而效率并不是丢的非常严重 。
且Java比C更受开源界和工业界的共同欢迎 。即使Java也有版权问题 。。。
我们屏蔽掉最基础的硬件差异 。通过Linux,在屏蔽掉手机的一些基本功能差异 。然后提供纯粹的利于开发者开发和测试的方法 。只有通过虚拟机了 。而这个虚拟机是需要讲性能的 。
Google搞了一个Davlik虚拟机 。对 。这就是Android的核心 。就是因为性能要求高 。不得不重新开发虚拟机 。Davlik就是一个非常讲效率的虚拟机 。而其他的常用库都有的,现成的 。根本就不需要自己去写的 。只要打包就好 。
那么还有些必须考效率的库和应用 。怎么办 。
用JNI技术调用C
对就这么坑爹 。
为什么Object-C这门语言无视我说的大部分要求了 。因为Apple有能力创造一门更好的语言 。Google对于Android,只是在开源社区挑一门语言 。
且 。ObjectC生在Apple,死在Apple 。兼容性 。人家才不需要考虑 。所以人家敢用Object-C,而Android为了实现真正的跨平台 。只能选Java 。
为什么要使用 Go 语言,Go 语言的优势在哪里已经有好多程序员都把Go语言描述为是一种所见即所得(WYSIWYG)的编程语言 。这是说go语言还不成熟,代码要做的事和它在字面上表达的意思是完全一致的 。在这些新语言中go语言还不成熟,包含D,Go,Rust和Vala语言,Go曾一度出现在TIOBE的排行榜上面 。与其他新语言相比 , Go的魅力明显要大很多 。Go的成熟特征会得到许多开发者的欣赏 , 而不仅仅是因为其夸大其词的曝光度 。下面我们来一起探讨一下谷歌开发的Go语言以及谈谈Go为什么会吸引众多开发者go语言还不成熟: 快速简单的编译 Go编译速度很快,如此快速的编译使它很容易作为脚本语言使用 。关于编译速度快主要有以下几个原因:首先,Go不使用头文件;其次如果一个模块是依赖A的,这反过来又取决于B,在A里面的需求改变只需重新编译原始模块和与A相依赖的地方;最后 , 对象模块里面包含了足够的依赖关系信息 , 所以编译器不需要重新创建文件 。go语言还不成熟你只需要简单地编译主模块,项目中需要的其他部分就会自动编译,很酷,是不是go语言还不成熟? 通过返回数值列表来处理错误信息 目前,在本地语言里面处理错误的方式主要有两种:直接返回代码或者抛异常 。这两种都不是最理想的处理方式 。其中返回代码是非常令人沮丧的,因为返回的错误代码经常与从函数中返回的数据相冲突 。Go允许函数返回多个值来解决这个问题 。这个从函数里面返回的值,可以用来检查定义的类型是否正确并且可以随时随地对函数的返回值进行检查 。如果你对错误值不关心,你可以不必检查 。在这两种情况下,常规的返回值都是可用的 。简化的成分(优先于继承) 通过使用接口 , 类型是有资格成为对象中一员的,就像Java指定行为一样 。例如在标准库里面的IO包,定义一个Writer来指定一个方法,一个Writer函数,其中输入参数是字节数组并且返回整数类型值或者错误类型 。任何类型实现一个带有相同签名的Writer方法是对IO的完全实现,Writer接口 。这种是解耦代码而不是优雅 。它还简化了模拟对象来进行单元测试 。例如你想在数据库对象中测试一个方法,在标准语言中,你通常需要创建一个数据库对象,并且需要进行大量的初始化和协议来模拟对象 。在Go里面,如果该方法需要实现一个接口,你可以创建任何对该接口有用的对象,所以,你创建了MockDatabase,这是很小的对象 , 只实现了几个需要运行和模拟的接口——没有构造函数,没有附件功能,只是一些方法 。简化的并发性 相对于其他语言 , 并发性在Go里面显得更加容易 。把‘go’关键字放在任意函数前面然后那个函数就会在其go-routine自动运行(一个很轻的线程) 。go-routines是通过通道进行交流并且基本上封锁了所有的队列消息 。普通工具对相互排斥是有用,但是Go通过使用通道来踢掉并发性任务和坐标更加容易 。优秀的错误消息 所有与Go相似的语言,自身作出的诊断都是无法与Go相媲美的 。例如,一个死锁程序,在Go运行时会通知你目前哪个线程导致了这种死锁 。编译的错误信息是非常详细全面和有用的 。其他 这里还有许多其他吸引人的地方,下面就一概而过的介绍一下,比如高阶函数、垃圾回收、哈希映射和可扩展的数组内置语言(部分语言语法,而不是作为一个库)等等 。当然,Go并不是完美无瑕 。在工具方面还有些不成熟的地方和用户社区较小等,但是随着谷歌语言的不断发展,肯定会有整治措施出来 。尽管许多语言,尤其是D、Rust和Vala旨在简化C并且对其进行简化,但它们给人的感觉仍是“C看上去要更好” 。
【Go语言的优势】
可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了 。
静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题 , 动态语言的感觉就是有很多的包可以使用,写起来的效率很高 。
语言层面支持并发,这个就是Go最大的特色,天生的支持并发,我曾经说过一句话,天生的基因和整容是有区别的,大家一样美丽 , 但是你喜欢整容的还是天生基因的美丽呢?Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发 。
内置runtime , 支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC 。
简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大 , 几乎支持大多数你在其他语言见过的特性:继承、重载、对象等 。
丰富的标准库,Go目前已经内置了大量的库 , 特别是网络库非常强大,我最爱的也是这部分 。
内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难 。
跨平台编译,如果你写的Go代码不包含cgo,那么就可以做到window系统编译linux的应用,如何做到的呢?Go引用了plan9的代码,这就是不依赖系统的信息 。
内嵌C支持,前面说了作者是C的作者,所以Go里面也可以直接包含c代码,利用现有的丰富的C库 。
如何配置go语言开发环境1、下载go的zip文件 。并且一定要把文件解压到c:\go目录下 。
2、配置windows的高级环境变量 。包括:GOROOT、GOOS、GOBIN、GOARCH 。并且在path变量里面把c:\go\bin加入 。以便可以在命令行直接运行go命令 。
举例:我的机器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安装路径;
F:\workspace\goSample01是我写的go语言项目的工程目录;
F:\workspace\goSample01\bin是go语言项目的工程目录下的可执行文件路径;
3、在完成环境变量配置后,打开一个命令行窗口,直接输入go,然后回车 , 看看是否出现go的帮助信息 。如果出现,那么go的基本环境就OK了 。
注意:这个基本环境不包含开发工具,也不能直接编译带C代码的go程序 。
4、(可选)为了支持Import远程包,最好装个gomingw 。下载地址: 。如果下的是压缩包 , 请把它解压到C盘 。例如 , C:\gowin-env 。里面有个Console.bat是以后使用go get的环境 。举例:有个文件a.go,里面import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
为了编译该a.go文件 , 需要启动Console.bat,然后在该命令行窗口 , 进入c:\go\src目录下,执行go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go会自动下载该远程包并编译和安装这些包 。
配置goclipse(可?。?
(如果不喜欢eclipse开发工具,请跳过这个配置 。)
1、下载并安装goclipse插件 。Goclipse是go语言for eclipse的插件 , 下载地址:
2、启动eclipse并创建go项目 。然后写个最简单的helloworld.go文件,并运行 。代码如下:
packagemainimport"fmt"func main(){fmt.Printf("hello, world")}
配置gocode(可?。?
如果不需要go语法辅助和eclipse里面的(按ALT /)弹出go语言自动辅助功能,请跳过这个配置 。
1、下载gocode的zip文件,解压后放在go的bin目录下 。
2、下载并安装Git软件 。并且在path里面配置git的执行路径 。例如c:\git\bin
3、在命令行执行:go build .\gocode 。如果一切正常,那么将会编译生成一个gocode.exe文件在go的bin目录下 。如果编译失败 , 那么就转第4步 。
4、如果第3步直接编译gocode源文件成功,那就直接到第5步 。否则 , 就需要通过git下载gocode源文件,然后再编译 。在命令行执行:go get -u github.com/nsf/gocode。就会生成gocode.exe文件 。
5、在goclipse插件里面指定gocode的路径 。就可以在elcipse里面调用gocode来帮助写编码了 。
从开发工具这块看 , go语言还不够成熟,开发工具都还不完善,有待改进 。
下载go-tour教程源代码(可?。?
Google有个在线运行go语言的教程(),很不错 。支持在web上直接运行大部分的go程序,想了解这个教程的源代码的朋友可以通过以下方式获取 。如果没兴趣,可以跳过这个步骤 。
1、下载安装Mercurial软件 。
2、在命令行下输入:
hg clone
这个URL是我从google的go-tour源代码的一个clone 。作为测试用的 。如果把http改成https协议,下载就会失败 。搞不懂 。
编译带调用C代码的go文件(可?。?
1、为了在windows下编译带C代码的go程序 , 你首先需要下载并安装MinGW或者Cygwin 。
2、首选安装MinGW 。在安装MinGW之后,记得要把MinGW安装目录\bin路径设置在path环境变量里面,以便能在dos窗口下直接调用gcc 。
3、下载一个gowin-env 。下载地址:gowin-env 。下载后解压到某个目录下,例如:C:\gowin-env. 然后,编辑go-env.bat 。配置相关的go参数 。例如,我的配置是:
set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
设置好go-env.bat后,就可以点击Console.bat来启动编译和运行窗口 。
4、编写一个带C代码的go程序 。例如,testc.go
5、编译
例如:
go build -compiler gccgo test_c.go
运行调用C代码的go文件(可?。?
1、testc.go.
创建rand目录,然后在rand里面创建testc.go. 代码如下:
package rand
/*
//
#include stdio.h
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2、a.go
在rand下创建a.go.代码如下:
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3、test_import.go
在rand的上一级创建test_import.go 。代码如下:
package main
import "./rand"
func main(){
rand.SayHello("tom")
rand.PrintHello()
}
4、运行test_import.go
go run test_import.go
在测试其它几个C代码的时候,发现windows版本的cgo还有些编译问题,同样的代码转移到苹果的XCODE下就没有问题 。后来终于发现原因了,原来有些例子是unix平台下的 , 而在windows平台下,方法名和参数需要做调整 。
例如:下面代码在windows下编译报一堆错误 。
package rand
/*
#include stdlib.h
*/
import "C"
func Random() int {
return int(C.random())
}
func Seed(i int) {
C.srandom(C.uint(i))
}
这里需要把return int(C.random()) 修改为“return int(C.rand())”
C.srandom(C.uint(i))修改为“C.srand(C.uint(i))”编译就OK了 。
【go语言还不成熟 go语言发展前景 知乎】关于go语言还不成熟和go语言发展前景 知乎的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读