小编给大家分享一下如何使用GO语言进行开发,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
先来个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) 类型 |
数组类型和结构类型统称为聚合类型。函数的类型指定具有相同参数和结果类型的所有函数的集合。我们将在下一节中看到基本类型,而其他类型将在后续章节中介绍。
预定义与体系结构无关的整数类型是:
编号 | 类型和说明 |
---|---|
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]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 < 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 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++ }
看完了这篇文章,相信你对“如何使用GO语言进行开发”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。