go语言替代java做Android_GO语言初识(为go开发android做准备)

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

老规矩,先来个hello world!// godemo1

/*

Author by zhangpeng

*/

package main

import (

"fmt"

)

func main() {

fmt.Println("Hello World")

}

运行结果:C:/Go/bin/go.exe run godemo1.go [E:/GoTest]

Hello World

成功: 进程退出代码 0.

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

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

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

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

Go中的类型可以分类如下:编号类型和说明1布尔类型 - 它们是布尔类型,由两个预定义常量组成:(a)true(b)false

2数字类型 - 它们是算术类型,在整个程序中表示:a)整数类型或 b)浮点值。

3字符串类型 - 字符串类型表示字符串值的集合。它的值是一个字节序列。 字符串是不可变的类型,一旦创建后,就不可能改变字符串的内容。预先声明的字符串类型是string。

4派生类型: - 包括(a)指针类型,(b)数组类型,(c)结构类型,(d)联合类型和(e)函数类型(f)切片类型(g)函数类型(h)接口类型(i) 类型

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

预定义与体系结构无关的整数类型是:编号类型和说明1uint8 - 无符号8位整数(0到255)

2uint16 - 无符号16位整数(0到65535)

3uint32 - 无符号32位整数(0至4294967295)

4uint64 - 无符号64位整数(0至18446744073709551615)

5int8 - 带符号的8位整数(-128到127)

6int16 - 带符号的16位整数(-32768到32767)

7int32 - 带符号的32位整数(-2147483648至2147483647)

8int64 - 带符号的64位整数(-9223372036854775808至9223372036854775807)

浮点类型

预定义的与体系结构无关的浮点类型是:编号类型和说明1float32 - IEEE-754 32位浮点数

2float64 - IEEE-754 64位浮点数

3complex64 - 复数带有float32实部和虚部

4complex128 - 复数带有float64实部和虚部

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

其他数字类型

还有一组具有特定大小的数字类型:编号类型和说明1byte - 与uint8相同

2rune - 与int32相同

3uint - 32或64位

4int - 与uint大小相同

5uintptr - 无符号整数,用于存储指针值的未解释位

变量和常量

变量的声明很像 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]int

fmt.Println("array a:", a)

a[1] = 10

a[3] = 30

fmt.Println("fangwifi:", a)

fmt.Println("len:", len(a))

b := [5]int{1, 2, 3, 4, 5}

fmt.Println("init:", b)

var c [2][3]int

for i := 0; i 

for j := 0; 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 

//负数

} 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相比还是有一些不同,需要多熟悉一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值