【Go】Go基础(三):基本结构和基本数据类型

1、Go程序源码结构
我们将一个Go程序的源码暂时称为一个项目 :

每个项目由若干个包组成;
每个包由同一个目录中的若干个go文件组成;
每个go文件中由若干函数、变量、常量等组成;
每个函数由流程控制语句、变量、常量、运算符和函数组成。

2、Go语言中的关键字
25个关键字:
break		default		func(定义函数)		interface	select
case		defer		go		map			struct
chan		else		goto	package		switch
const(定义常量)	fallthrough	if	range		type
continue	for		import		return		var(定义变量)
36个预定义标识符,其中包含了基本类型的名称和一些基本的内置函数:

(注:不用引入包就能使用的函数为内置函数)

append	bool	byte	cap	close	complex	complex64	complex128	uint16
copy	false	float32	float64	imag	int	int8	int16	uint32
int32	int64	iota	len	make	new	nil	panic	uint64
print	println	real	recover	string	true	uint	uint8	uintptr

程序中可能会使用到这些分隔符:

括号 (),中括号 [] 和大括号 {}。

程序中可能会使用到这些标点符号:

.、,、;、: 和 …。

程序的代码通过语句来实现结构化。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。
多个语句写在同一行,它们则必须使用 “;” 人为区分

3、常量

关键字const,格式:const identifier [type] = value
枚举常量

type Color int
const (
	RED Color = iota // 0
	ORANGE // 1
	YELLOW // 2
)

iota遇到const变为0

4、变量

关键字var,格式:var identifier type(注意,类型在变量后面)如:var a int。
当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil。记住,所有的内存在 Go 中都是经过初始化的。

局部变量:使用简短声明语法 :=,如:a := 1
全局变量允许声明后不使用,局部变量声明后必须使用,否则会报错:a declared and not used

并行赋值:a, b, c := 5, 7, "abc"
交换变量值:a, b = b, a
空白标识符:_ 

init函数:它不能够被人为调用,而是在每个包完成初始化后自动执行,并且执行优先级比 main 函数高。
每个源文件都只能包含一个 init 函数。初始化总是以单线程执行,并且按照包的依赖关系顺序执行。

5、基本类型和运算

基本类型:

布尔类型 bool、 整型 int 、浮点型 float、复数complex64 、complex128 

运算符:

位运算符:与&、或|、异或^、左移<<、右移>>、
逻辑运算符:==、!=、<、<=、>、>=
算术运算符:+、-、*、/、%、-=、*=、/=、%=、++、--;自增减只能用于后缀、
只能作为语句,而非表达式,如:f(i++)是无效

优先级 运算符

7 		^ !
6 		* / % << >> & &^
5 		+ - | ^
4 		== != < <= >= >
3 		<-
2 		&&
1 		||

类型别名:关键字type
字符类型:byte 类型是 uint8 的别名;Unicode字符rune是 int32 的别名

6、字符串

string类型:字符串是字节的定长数组,不可修改。

Go 支持以下 2 种形式的字面值:
解释字符串:该类字符串使用双引号括起来,其中的相关的转义字符将被替换,
这些转义字符包括:

	\n:换行符
	\r:回车符
	\t:tab 键
	\u 或 \U:Unicode 字符
	\\:反斜杠自身

非解释字符串:
该类字符串使用反引号括起来,支持换行,例如:

	`This is a raw string \n` 中的 `\n\` 会被原样输出。

字符串比较:

==、!=、<、<=、>=、>

字符串长度:

len(str)

字符串拼接:

+、+=

注意事项 获取字符串中某个字节的地址的行为是非法的,例如:&str[i]。

7、strings 和 strconv 包

前缀判断:strings.HasPrefix(s, prefix string) bool
后缀判断:strings.HasSuffix(s, suffix string) bool
字符串包含:strings.Contains(s, substr string) bool
子字符串在父字符串中的位置:strings.Index(s, str string) int
最后出现的位置:strings.LastIndex(s, str string) int
非ASCII编码的字符在父字符串中的位置:strings.IndexRune(s string, r rune) int
字符串替换:strings.Replace(str, old, new, n) string
将字符串 str 中的前 n 个字符串 old 替换为字符串 new,并返回一个新的字符串,如果 n = -1 则替换所有字符串 old 为字符串 new:
出现次数:strings.Count(s, str string) int
复制多次字符串:strings.Repeat(s, count int) string
转小写:strings.ToLower(s) string
转大写:strings.ToUpper(s) string
剔除字符串开头和结尾的空白符号:strings.TrimSpace(s) string
剔除字符串开头和结尾的指定字符:strings.Trim(s, “cut”) string
剔除字符串开头字符:strings.TrimLeft
剔除字符串结尾字符:strings.TrimRight
以空白符来分割字符串:strings.Fields(s),返回slice
以自定义分隔符来分割字符串:strings.Split(s, sep), 返回slice
将slice拼接成字符串:strings.Join(sl []string, sep string) string

strconv包:与字符串相关的类型转换
整数转字符串:strconv.Itoa(i int) string
浮点型转字符串:strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) string 将 64 位浮点型的数字转换为字符串,其中 fmt 表示格式(其值可以是 ‘b’、‘e’、‘f’ 或 ‘g’),prec 表示精度,bitSize 则使用 32 表示 float32,用 64 表示 float64。
字符串转整数:strconv.Atoi(s string) (i int, err error)
字符串转浮点型:strconv.ParseFloat(s string, bitSize int) (f float64, err error)

8、日期和时间:time包

获取当前时间:time.Now()、t.Day()、t.Minute()
格式化输出时间:func (t Time) Format(layout string) string
休眠:time.Sleep(Duration d)

9、指针

取地址符是:&
地址内容引用:*

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭老二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值