文章目录
- 简介
- 标识符
- 字符串的拼接,
- 关键字
- 数据类型
- 声明变量
- 常量
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算
- 赋值运算符
- 其他运算符
简介
Go 语言的基础组成有以下几个部分:
1.包声明
2.引入包
3.函数
4.变量
5.语句 & 表达式
6.注释
package main
import "fmt"
func main() {
/* 这是我的第一个简单的程序 */
fmt.Println("Hello, World!")
}
/*func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,
一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)*/
标识符
变量命名,
不能以数字开头;不能出现关键字;不能出现运算符;
字符串的拼接,
“+”,与java等语言相同
关键字
type,case,break,default,func,interface
数据类型
布尔类型:var b bool = true
数字类型:uint8,uint16,uint32,uint64,int8,float32,complex64
字符串类型
派生类型:
(a) 指针类型(Pointer)
(b) 数组类型
© 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型
声明变量
1,指定变量类型,如果没有初始化,则变量默认为零值
var ( // 这种因式分解关键字的写法一般用于声明全局变量
a int
b bool
)
var a string = "Runoob"
var b, c int = 1, 2
var b int //默认变量为0
2,根据值自行判定变量类型
var v_name = value
var d = true
3,省略 var, 注意 := 左侧如果没有声明新的变量,就产生编译错误
//这种不带声明格式的只能在函数体中出现
f := "Runoob" // var f string = "Runoob"
var intVal int
intVal :=1 // 这时候会产生编译错误
intVal,intVal1 := 1,2 // 此时不会产生编译错误,因为有声明新的变量,因为 := 是一个声明语句
注意问题:
如果你想要交换两个变量的值,则可以简单地使用 a, b = b, a,两个变量的类型必须是相同。
_,numb,strs := numbers() //只获取函数返回值的后两个
常量
你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。
显式类型定义: const b string = "abc"
隐式类型定义: const b = "abc"
多个相同类型的声明可以简写为:
const a, b, c = 1, false, "str" //多重赋值
常量还可以用作枚举:
const (
Unknown = 0
Female = 1
Male = 2
)
常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)
)
iota,特殊常量,可以认为是一个可以被编译器修改的常量。
const (
a = iota
b = iota
c = iota
)
第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2
可以简写为如下形式:
const (
a = iota
b
c
)
实战
const (
a = iota //0
b //1
c //2
d = "ha" //d="ha",iota += 1
e //e="ha" iota += 1
f = 100 //f=100,iota +=1
g //g=100 iota +=1
h = iota //h=7,恢复计数
i //i=8
)
const (
i=1<<iota
j=3<<iota
k
l
)
iota 表示从 0 开始自动加 1,所以 i=1<<0, j=3<<1(<< 表示左移的意思),即:i=1, j=6,这没问题,关键在 k 和 l,从输出结果看 k=3<<2,l=3<<3。
简单表述:
i=1:左移 0 位,不变仍为 1;
j=3:左移 1 位,变为二进制 110, 即 6;
k=3:左移 2 位,变为二进制 1100, 即 12;
l=3:左移 3 位,变为二进制 11000,即 24。
算术运算符
加 + ,减 - ,乘 *,除 /,余%,自增++,自减–
关系运算符
等于:==,不等于:!=,大于:>,小于:<,大于等于:>=,小于等于:<=
逻辑运算符
&&
||
!
逻辑运算符没有&和 |
位运算
&,|,^,<<,>>
赋值运算符
+=,<<=
其他运算符
&a; 将给出变量的实际地址。
*a; 是一个指针变量