go语言

Go语言基础之开发环境、数据类型、运算符

2018-11-24  本文已影响242人  梁朋举

开发环境搭建

go官网 https://golang.org/
下载 https://golang.org/dl/
下载 go1.11.2.windows-amd64.msi安装包,双击安装即可。

IDE工具

IntelliJ IDEA 安装go插件
File-Setting-Pluigns,检索go,点击install即可安装,安装成功后重启即可完成

go pluign

新建Go项目
File-New-Project,选择Go,填写项目信息


新建Go项目

填写项目名称,选择项目保存目录,点击Finish即可

项目信息

新建Go File,选择File-New-Go File


Go File

完成简单的Hello world输出

/**包声明*/
package main

//引入包
import "fmt"

/**main函数定义*/
func main() {//go语法要求函数定义后紧跟的大括号必须跟在函数名后面,不能回车到下一行
    /**定义变量name,并赋初值*/
    var name string = "feiyue"
    // fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n
    fmt.Println("Hello world!","This is "+name)
}

//执行结果
Hello world! This is feiyue

程序编写完成后,直接点击main函数左侧绿色按钮运行即可

Run

Go 语言的基本构成

var a, b int
var c string
a, b, c = 2, 3, "abc"

Go 语言数据类型

在 Go 编程语言中,数据类型用于声明函数和变量。
Go 语言按类别有以下几种数据类型:Go 语言按类别有以下几种数据类型:

序 号 类型 描述
1 布尔型 布尔型的值只可以是常量 true 或者 false。var b bool = true
2 数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。
3 字符串类型 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。
4 派生类型 包括:(a) 指针类型(Pointer)(b) 数组类型(c) 结构化类型(struct)(d) Channel 类型(e) 函数类型(f) 切片类型(g) 接口类型(interface)(h) Map 类型

数字类型

整型:

序号 类型 描述
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 32 位实数和虚数
4 complex128 64 位实数和虚数

其他数字类型

序号 类型 描述
1 byte 类似 uint8
2 rune 类似 int32
3 uint 32 或 64 位
4 int 与 uint 一样大小
5 uintptr 无符号整型,用于存放一个指针

Go 语言运算符

运算符用于在程序运行时执行数学或逻辑运算。
Go 语言内置的运算符有:

运算符 描述 实例
+ A + B 输出结果 30
- A - B 输出结果 -10
* A * B 输出结果 200
/ B / A 输出结果 2
% 求余 B % A 输出结果 0
++ 自增 A++ 输出结果 11
-- 自减 A-- 输出结果 9

代码示例

    var a int = 36
    var b int = 10
    var c int
    //加法
    c = a + b
    fmt.Printf("a + b = %d\n", c )
    //减法
    c = a - b
    fmt.Printf("a - b = %d\n", c )
    //乘法
    c = a * b
    fmt.Printf("a * b = %d\n", c )
    //除法
    c = a / b
    fmt.Printf("a / b = %d\n", c )
    //求余
    c = a % b
    fmt.Printf("a对b求余 = %d\n", c )
    //自增
    a = 20
    a++
    fmt.Printf("a++后 a 的值为  %d\n", a )
    //自减
    a = 20
    a--
    fmt.Printf("a--后 a 的值为 %d\n", a )

//执行结果
a + b = 46
a - b = 26
a * b = 360
a / b = 3
a对b求余 = 6
a++后 a 的值为  21
a--后 a 的值为 19
运算符 描述 实例
== 检查两个值是否相等,如果相等返回 True 否则返回 False。 (A == B) 为 False
!= 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 (A != B) 为 True
> 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 (A > B) 为 False
< 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 (A < B) 为 True
>= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 (A >= B) 为 False
<= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 (A <= B) 为 True

代码示例

    var a int = 36
    var b int = 20
    // == 等于
    fmt.Println("a == b ",a == b )
    fmt.Println("a != b ",a != b )
    // < 小于
    fmt.Println("a < b ",a < b )
    // > 大于
    fmt.Println(" a > b ",a > b )
    // <= 小于等于
    fmt.Println("a <= b ",a <= b )
    // >= 大于等于
    fmt.Println("b >= a ",b >= a )
//执行结果
a == b  false
a != b  true
a < b  false
 a > b  true
a <= b  false
b >= a  false
运算符 描述 实例
&& 逻辑 AND 运算符。 如果两边的操作数都是 True,则条件 True,否则为 False。 (A && B) 为 False
|| 逻辑 OR 运算符。 如果两边的操作数有一个 True,则条件 True,否则为 False。 (A || B) 为 True
! 逻辑 NOT 运算符。 如果条件为 True,则逻辑 NOT 条件 False,否则为 True。 !(A && B) 为 True

代码示例

var a bool = true
var b bool = false
fmt.Println("a && b = ",a && b )
fmt.Println("a || b = ",a || b )
fmt.Println(" !a = " , !a)

//执行结果
a && b =  false
a || b =  true
 !a =  false
运算符 描述 实例
& 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 (A & B) 结果为 12, 二进制为 0000 1100
| 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或 (A | B) 结果为 61, 二进制为 0011 1101
^ 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (A ^ B) 结果为 49, 二进制为 0011 0001
<< 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 A << 2 结果为 240 ,二进制为 1111 0000
>> 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。 A >> 2 结果为 15 ,二进制为 0000 1111

按位与&、按位或|、按位异或^ 的二进制运算表如下所示:

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1
运算符 描述 实例
= 简单的赋值运算符,将一个表达式的值赋给一个左值 C = A + B 将 A + B 表达式结果赋值给 C
+= 相加后再赋值 C += A 等于 C = C + A
-= 相减后再赋值 C -= A 等于 C = C - A
*= 相乘后再赋值 C *= A 等于 C = C * A
/= 相除后再赋值 C /= A 等于 C = C / A
%= 求余后再赋值 C %= A 等于 C = C % A
<<= 左移后赋值 C <<= 2 等于 C = C << 2
>>= 右移后赋值 C >>= 2 等于 C = C >> 2
&= 按位与后赋值 C &= 2 等于 C = C & 2
^= 按位异或后赋值 C ^= 2 等于 C = C ^ 2
|= 按位或后赋值 C |= 2 等于 C = C | 2
运算符 描述 实例
& 返回变量存储地址 &a; 将给出变量的实际地址。
* 指针变量。 *a; 是一个指针变量

运算符优先级
有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

优先级 分类 描述 关联性
1 后缀 () [] -> . ++ -- 左到右
2 一元 + - ! ~ ++ -- (type)*&sizeof 右到左
3 乘除、求余 * / % 左到右
4 加减 + - 左到右
5 移位 << >> 左到右
6 关系 < <= > >= 左到右
7 相等 == != 左到右
8 按位与 & 左到右
9 按位异或 ^ 左到右
10 按位或 | 左到右
11 逻辑AND && 左到右
12 逻辑OR || 左到右
13 条件 ?: 右到左
14 赋值 = += -= *= /= %= >>= <<= &= ^= |= 右到左
15 逗号 , 左到右
上一篇 下一篇

猜你喜欢

热点阅读