大概14年的时候go语言的开发者就提过android平台会引入go开发,GO语言的1.5版本也发布了go mobile。现在够发布到1.8预览版了,该学学go了,不然被落下太多了

老规矩,先来个hello world!

// godemo1
/*Author by zhangpeng
*/
package mainimport ("fmt"
)func main() {fmt.Println("Hello World")
}

运行结果:

C:/Go/bin/go.exe run godemo1.go [E:/GoTest]
Hello World
成功: 进程退出代码 0.

哇擦雷,代码里竟然没有分号!其实,和C一样,Go的正式的语法使用分号来终止语句。和C不同的是,这些分号由词法分析器在扫描源代码过程中使用简单的规则自动插入分号,因此输入源代码多数时候就不需要分号了

规则是这样的:如果在一个新行前方的最后一个标记是一个标识符(包括像intfloat64这样的单词)、一个基本的如数值这样的文字、或以下标记中的一个时,会自动插入分号:

break continue fallthrough return ++ -- ) }

通常Go程序仅在for循环语句中使用分号,以此来分开初始化器、条件和增量单元。如果你在一行中写多个语句,也需要用分号分开。

注意无论任何时候,你都不应该将一个控制结构((ifforswitchselect)的左大括号放在下一行。如果这样做,将会在大括号的前方插入一个分号,这可能导致出现不想要的结果

Go中的类型可以分类如下:

编号 类型和说明
1 布尔类型 - 它们是布尔类型,由两个预定义常量组成:(a)true(b)false
2 数字类型 - 它们是算术类型,在整个程序中表示:a)整数类型或 b)浮点值。
3 字符串类型 - 字符串类型表示字符串值的集合。它的值是一个字节序列。 字符串是不可变的类型,一旦创建后,就不可能改变字符串的内容。预先声明的字符串类型是string
4 派生类型: - 包括(a)指针类型,(b)数组类型,(c)结构类型,(d)联合类型和(e)函数类型(f)切片类型(g)函数类型(h)接口类型(i) 类型

数组类型和结构类型统称为聚合类型。函数的类型指定具有相同参数和结果类型的所有函数的集合。我们将在下一节中看到基本类型,而其他类型将在后续章节中介绍。

预定义与体系结构无关的整数类型是:

编号 类型和说明
1 uint8 - 无符号8位整数(0到255)
2 uint16 - 无符号16位整数(0到65535)
3 uint32 - 无符号32位整数(0至4294967295)
4 uint64 - 无符号64位整数(0至18446744073709551615)
5 int8 - 带符号的8位整数(-128到127)
6 int16 - 带符号的16位整数(-32768到32767)
7 int32 - 带符号的32位整数(-2147483648至2147483647)
8 int64 - 带符号的64位整数(-9223372036854775808至9223372036854775807)

浮点类型

预定义的与体系结构无关的浮点类型是:

编号 类型和说明
1 float32 - IEEE-754 32位浮点数
2 float64 - IEEE-754 64位浮点数
3 complex64 - 复数带有float32实部和虚部
4 complex128 - 复数带有float64实部和虚部

n位整数的值是n位,并且使用二进制补码算术运算来表示。

其他数字类型

还有一组具有特定大小的数字类型:

编号 类型和说明
1 byte - 与uint8相同
2 rune - 与int32相同
3 uint - 32或64位
4 int - 与uint大小相同
5 uintptr - 无符号整数,用于存储指针值的未解释位

变量和常量

变量的声明很像 javascript,使用 var关键字。

//声明初始化一个变量
var  x int = 888
var str string = "hello world"
//声明初始化多个变量
var  i, j, k int = 1, 2, 3//不用指明类型,通过初始化值来推导
var b = false//bool型

还有一种定义变量的方式

x := 888 //相当于 var x int = 888

常量很简单,使用const关键字:

const s string = "hello world"
const pi float32 = 3.1415926

数组

func main() {var a [5]intfmt.Println("array a:", a)a[1] = 10a[3] = 30fmt.Println("fangwifi:", a)fmt.Println("len:", len(a))b := [5]int{1, 2, 3, 4, 5}fmt.Println("init:", b)var c [2][3]intfor i := 0; i < 2; i++ {for j := 0; j < 3; j++ {c[i][j] = i + j}}fmt.Println("2d: ", c)
}

运行结果:

array a: [0 0 0 0 0]
fangwifi: [0 10 0 30 0]
len: 5
init: [1 2 3 4 5]
2d:  [[0 1 2] [1 2 3]]

数组的切片操作

a := [5]int{1, 2, 3, 4, 5}
b := a[2:4] // a[2] 和 a[3],但不包括a[4]
fmt.Println(b)
b = a[:4] // 从 a[0]到a[4],但不包括a[4]
fmt.Println(b)
b = a[2:] // 从 a[2]到a[4],且包括a[2]
fmt.Println(b)


if语句
分支循环语句

注意:if 语句没有圆括号,而必需要有花括号

//if 语句
if x % 2 == 0 {//do anything
}
//if - else
if x % 2 == 0 {//偶数...
} else {//奇数...
}//多分支
if num < 0 {//负数
} else if num == 0 {//零
} else {//正数
}


注意:switch语句没有break,还可以使用逗号case多个值switch 语句

switch i {case 1:fmt.Println("one")case 2:fmt.Println("two")case 3:fmt.Println("three")case 4,5,6:fmt.Println("four, five, six")default:fmt.Println("invalid value!")
}

前面你已见过了,下面再来看看for的三种形式:(注意:Go语言中没有while)for 语句

//经典的for语句 init; condition; post
for i := 0; i<10; i++{fmt.Println(i)
}//精简的for语句 condition
i := 1
for i<10 {fmt.Println(i)i++
}//死循环的for语句 相当于for(;;)
i :=1
for {if i>10 {break}i++
}

先做一个最简单的接触,语法不难但是和java相比还是有一些不同,需要多熟悉一下。

转载于:https://blog.51cto.com/itzhongxin/1911785

GO语言初识(为go开发android做准备)相关推荐

  1. 开发Android app需要掌握的技术

    最近一直在忙着工作的事,很久没有更新博客了,今天突发奇想要把自己学到的android方面的知识记录下来,一方面是为了系统的回顾一下知识点自己的学习路线,另一方面希望能帮到更多初学的朋友.学习andro ...

  2. android 开发 python_用python语言开发android应用程序(1) - 格物致知的博客空间 - 中国移动开发者社区 - Powered by X-Space...

    对于不熟悉Java语言,又想进入android开发领域的人来说,似乎有两个选择,一个是重新开始学习Java语言,然后开始学习android开发,一个就是到处求方问药:在android上可不使用XXX语 ...

  3. android lua 开发环境搭建,使用 lua 语言开发Android应用

    做移动端开发,做蛋疼的就是不能动态发版,不能像 web 那样发版立即全部用户生效,然而 lua语言 为其提供了可能性.使用 lua 来构建跨平台原生应用有许多好处,比如 lua 语言简洁高效,可移植性 ...

  4. 代码加密 android,Android 开发怎样做代码加密或混淆

    原标题:Android 开发怎样做代码加密或混淆 对于Android开发技术人员来说,隐藏代码或是混淆代码至关重要.试想自己辛辛苦苦赶工出来的产品,被其他开发者反编译后轻松拿走.放在哪里都是一件让人崩 ...

  5. 安卓 c 语言开发环境搭建,用C++语言开发Android程序 配置开发环境

    如果你是一个C++语言的死忠,你喜欢C++语言到了偏执的状态,如果不想学习Java语言,或者你很讨厌Java语言,如果你认为Java虚拟机的内存占用太多和执行低效.如果你过度关注Andoird程序的执 ...

  6. Go语言开发Android程序

    Go 语言开发 Android 程序 转自:http://studygolang.com/articles/9620 环境配置 安装 Go 1.5 以上版本,具体安装步骤见官网 https://gol ...

  7. go语言android开发环境搭建,golang开发android应用(一) - go语言android应用环境搭建...

    基于golang的android动态库开发,很久以前golang就支持开发android上的动态库及应用了,golang的环境搭建就不说了,直接从gomobile开始 软件依赖 golang, gom ...

  8. 用Kotlin开发android平台语音识别语义理解应用

    用Kotlin开发android平台语音识别,语义理解应用(olamisdk) 转载请注明CSDN博文地址:http://blog.csdn.net/ls0609/article/details/75 ...

  9. 【Xamarin开发 Android 系列 4】 Android 基础知识

    什么是Android? Android一词的本义指"机器人",同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件. ...

最新文章

  1. 模块化、层次化网络监控平台
  2. mysql数据迁移数据一致性检教6_如何在数据库迁移中保证数据一致性?
  3. python协程处理海量文件_python_实战篇_使用协程gevent模块实现多任务copyA文件夹到B文件夹...
  4. 耳目一新!令人膜拜的牛人简历!厉害的攻城师啊
  5. (转)Spring Boot 2 (九):【重磅】Spring Boot 2.1.0 权威发布
  6. getUpdateCount成员函数不能返回正确数量
  7. LaTex下载与安装教程(一切为了学术~)
  8. Win7系统怎么截图快捷键
  9. 中国大学moocpython答案查询_中国大学MOOC慕课Python机器学习应用mooc题库查题答案...
  10. 【免费个人网站制作】免费个人网站如何制作?
  11. A Scalable Probabilistic Tensor Factorization(SPTF)论文小结
  12. 【华人学者风采】郑宇 京东
  13. 西农本科毕业论文样例及撰写规范
  14. OpenCV打开摄像头《大华摄像头》
  15. C++ 类的交叉引用
  16. 2018秋招历程之28所
  17. Codesys数据结构:1.1 标准数据类型
  18. 简论数控机床的特点及发展趋势
  19. SecureCRT 密码解密
  20. 中兴机试-2020-08-24

热门文章

  1. 城科会刘朝晖:从互联网大脑模型看城市大脑
  2. 亚洲与非洲:中国支付巨头的海外进击
  3. 拥抱人工智能报告:中国未来就业的挑战与应对
  4. 李德毅:“反用驾驶脑”测认知能力,谁说酒驾一定违规?
  5. 全球16家超级独角兽公司,为什么中国能占7家,印度只有1家?未来哪些行业最可能诞生独角兽?
  6. 永远不要辞职,除非……
  7. java内外循环打印等腰三角*号
  8. 更清晰的认识对象——深拷贝与浅拷贝
  9. jquery等待特定元素加载再执行相关函数
  10. 开发者需要知道的有关软件架构的五件事