文档章节

go笔记1-helloWorld

老范的自留地
 老范的自留地
发布于 2012/10/29 16:03
字数 1105
阅读 776
收藏 3
点赞 0
评论 3


有一次听一个沙龙技术演讲,讲师说go是互联网时代的c,听了详细介绍以后感觉很赞,尤其是并行层面真正在语言层面上做了控制及特殊的内存管理机制等。。。



好吧,下面上先上helloWorld代码。(以后系列的博客也是以代码为主)



package main //这个是必须的,所有的go文件必须以 package开头

import "fmt"  // ”fmt“是go必须要引入格式化I/O的库。如果要引入多个库import用(  )号包裹所有的库。例如 import ( “fmt” “strconv”)

func main() {    //这是主函数
	fmt.Printf("hello world!")// fmt的Print()函数用于打印
}



这是最简单的一个go程序。



关于go程序的编译跟执行笔者是再win7 64bit机器用的LiteIDE工具,LiteIDE是由国人开发的一款go编译执行开发环境,用起来感觉挺不错的。第一次编译执行go程序需要配置工具的LiteEnv(主要是配置golang下载解压后的目录)



下面说一下go的一些变量定义:


go语言与其他语言不通的地方就是在变量类型放在变量后边 如下:


var i int;

var j bool;

给i跟j赋值


i=10;

j=true;


如果要定义很多变量会需要些 var,go也可以这样定义变量 如下:

var(

  i int

  j bool


golang还有自己的简便写法 变量名:=值  这种方式go会自动根据值定义其类型 如下:

i:=10;

j:=true;


go的int 类型根据硬件他们的长度是不同的,会分文int32 int64 。int int32 int64定义的变量是不可以直接赋值的。需要转换类型。



个人总结起来golang的几大优点:


   1,简洁,go代码很简洁,能在短短的几行代码里做很多东西。代码简洁导致了代码更清晰。对比笔者吃饭用的java来说,减少了很多冗余,毕竟java是以方法为单元的,难免会有冗余。

   2,并发控制好,go再os层面上独自封装了一层叫gorountines的轻量线程,由语言层面进行了并发控制,其他语言来说java也只是在语言层面上做了synchronized加锁控制。虽然java运行在jvm里,但实际上也没有脱离os层面,jvm也会调用os层面的线程。另外笔者熟悉的php,python等也有一些附加的线程库来写并发程序,实际也是调用os层面线程的模型。gorountines是一个轻量的线程,一秒切换的速度是远远快于线程的。

   3,gorountines之间通讯交换数据要用channel完成。golang的并发模型是重新设计的。之前的语言例如java是通过共享来通讯(通过分享一段内存,各个内容之间通过加锁进行控制,这样根据加锁力度会造成程序复杂度会不同),golang是通过通过通讯来共享的,每个并行单元只管理自己的内容,意思是说,在gorountines之间根本就不用显示的进行加锁控制,而且强制通讯成本变低,这样通讯速度就会加快。还有channel是阻塞的。跟c的串行编程思想是一致的。因为channel是阻塞的,所以除了通讯功能之外,还可以用来做同步。(读阻塞,写阻塞)

 4.再就是编译速度快,另外想说的是golang有很严格的规则,如果go程序里引入了没有用到的库,或者定义了一个程序里没有用到的变量,程序是编译不过去的。但是go的错误提示会很详细。

5.变量定义类型是定义在后面 这跟之前的很多大众语言都不一样,导致笔者经常犯这个错误,举例:var str string;

6.go简化并行开发有GC参与其中,这就不用关注需要关闭哪些变量,go会自动帮你做这些工作。类似java,解决c c++程序开发过程最经常用碰到的内存泄露问题。

7.另外go的所有编码都是基于Utf-8的。官方宣传视频讲写go程序会很happy,go用起来的感觉更像linux。。



© 著作权归作者所有

共有 人打赏支持
老范的自留地

老范的自留地

粉丝 31
博文 44
码字总数 17451
作品 1
北京
架构师
加载中

评论(3)

老范的自留地
老范的自留地

引用来自“Wendal”的评论

fmt 不是必须的
加上 -ldflags="-w -s" 会小很多

ok。回家试一下。
wendal
wendal
fmt 不是必须的
加上 -ldflags="-w -s" 会小很多
sndnvaps
sndnvaps
用起来不错。
就是编译生成的文件,有点大。
这个不是很好。
Apache CXF 学习资料

更多资料: Apache CXF 客户端调用 超时设置 CXF学习笔记(1)-HelloWorld!-发布webservice CXF学习笔记(2)-HelloWorld!-客户端调用 CXF学习笔记(3)-HelloWorld!-通过servlet发布webservice CX...

梅花扣肉
2016/06/25
84
0
Cocos2dx游戏开发系列笔记3:牛刀小试->忍者飞镖射幽灵的Demo

就是这个例子,应该很简单,主要用到的有:精灵的移动,触摸,碰撞检测。 赶紧搞定,待会还要陪哲哲来几局爱消除。 首先在Scene初始化方法里添加精灵: CCSprite *player =CCSprite::create...

懒骨头
2013/12/09
0
0
Cocos2dx游戏开发系列笔记2:一个刚创建的cocos2dx中的demo里都有什么

烦人的环境终于ok了,改了改文本,换了换图片资源,还是能在手机里运行。ok,关了Eclipse,去vs中看看吧。 虽然是根老骨头了,但还真没怎么用C++,以前接触过点Java的开发框架,估计大差不差...

懒骨头
2013/12/09
0
0
react-native 入门之 helloworld

简介 在网上找了一篇很不错的例子,推荐给大家边学边做 helloworld 首先,我们先创建一个项目,它的原始代码如下,可以看出来主要分为样式和功能两部分,没什么值得留意的 显示效果是这样的 ...

邪人君子
01/20
0
0
1、cocos2dx开发学习第一篇-项目工程的创建

从接触2dx到现在己经半年了,从起初的无知少年到现在还是个无知少年,感觉自己进步的很缓慢,静下心来想了想,觉得自己以前的学习只是看了不作笔记,懂了就懂了,可以这样有个隐患,那就是时...

JanweChan
2014/03/01
0
0
cocos2d-js学习笔记(二)

cocos2d创建,编译和打包 创建新cocos2d-js项目 进入cmd,切到桌面 cd ./Desktop cocos new HelloWorld -l js 在桌面就会创建一个HelloWorld项目 运行cocos2d-js项目 进入到HelloWorld文件夹...

yuewawa
2016/01/28
45
0
【学习笔记11】动态方法调用和使用通配符定义action

动态方法调用: 如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法。如下: public class HelloWorldAction{ } 假设访问上面action的URL路径为: /struts/test/helloworld.acti...

张超
2013/04/14
0
0
2. 脚手架解构 | 网站搭建学习笔记

上一篇 脚手架搭建 | 网站搭建学习笔记 中通过yeoman和vue-cli搭建了一个脚手架,脚手架的好处是自动构建出了一套可以被直接使用的网站。从认识世界的顺序来说,看到一个东西,有了直观的印象...

MiSterRabbit
2017/12/31
0
0
《Beginning Linux Programming》读书笔记(四)

1, 读写空指针 先看第一种情况,printf试图访问空指针,以打印出字符串,而sprintf试图向空指针写入字符串,这时,linux会在GNU C函数库的帮助下,允许读空指针,但不允许写空指针。 复制代...

嗯哼9925
01/08
0
0
Java JNI学习笔记

一 创建一个Java项目,名称JNIDemo 二 新建HelloWorld.java 三 在dos下进入项目的bin文件夹下,使用javah命令编译HelloWorld.class文件 javah com.demo.jnidemo.HelloWorld 编译后会生成一个...

yuewawa
2016/03/17
27
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、登录流程图 二、小程序客户端 doLogin:function(callback = () =>{}){let ...

公众号_好好学java
19分钟前
0
0
流利阅读笔记28-20180717待学习

“我不干了!” 英国脱欧大臣递交辞呈 雪梨 2018-07-17 1.今日导读 7 月 6 日,英国政府高官齐聚英国首相的官方乡间别墅——契克斯庄园,讨论起草了一份关于英国政府脱欧立场的白皮书。可是没...

aibinxiao
49分钟前
4
0
OSChina 周二乱弹 —— 理解超算排名这个事,竟然超出了很多人的智商

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @-冰冰棒- :分享Ed Sheeran/Beyoncé的单曲《Perfect Duet (with Beyoncé)》 《Perfect Duet (with Beyoncé)》- Ed Sheeran/Beyoncé 手机...

小小编辑
今天
40
5
Android 获取各大音乐平台的真实下载地址

废话 电脑使用谷歌浏览器或者QQ浏览器的时候。。。。。。。说不清楚,还是看图吧 大概意思就是,只要网页上需要播放,只要能播放并且开始播放,这个过程就肯定会请求到相关的音乐资源,然后就...

她叫我小渝
今天
0
0
shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
今天
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
1
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部