Go语言编程基础

如何学习一门新的编程语言

我觉得学编程应该先学会该门编程语言的打印,这样你就可以立刻获得反馈

编辑器中的不同
编译型语言有build and run
如果你改动了东西 再run就不对了。需要build and run
build and run 编译并执行
run 只执行
在LiteIDE中只要build下就可以转化为可执行文件(快捷键 ctrl+b)
然后运行看效果的话使用快捷键(ctrl+r)
Go语言高级编程了解一些高级概念吧!!!
看Gopath使用go env即可,然后这里竟然是存放github项目

与Python不相关的概念问题

数组,字符串,切片是三种不一样的概念问题。底层有着相同的内存数据结构。。。

go语言中的语法强迫性

在函数内一定要使用全部声明的变量,若存在未使用的变量,则代码编译失败。
还有如果导入的包未使用,就不能通过编译,可以通过下划线标识符"_"来代替作为这个包的名字,但这里代替名字又和python不一样,它的代替名称是在包名称的前面。

基本编程语言都要学的

经常使用的打印语法:fmt.Printf()
使用range迭代字符串,range迭代的是Unicode而不是字节。返回的是两个值,第一个是被迭代的字符的UTF-8编码的第一个字节在字符串中的索引,第二个是对应的字符且类型为rune(实际就是标识Unicode值得整形数据)
range迭代得到的数据

U+0047 'G'  : 0
U+006F 'o'  : 1
U+8BED '语'  : 2
U+8A00 '言'  : 5
U+0031 '1'  : 8
U+0031 '1'  : 9

数据类型

基础数据类型:布尔,数字,字符串,符合类型(指针类型,数组类型,结构类型,通道类型,函数类型,切片类型,接口类型和字典类型(8种)),错误类型

复合数据类型

变量

声明构造变量:采用var来声名,而变量标识符名称由字母、数字、下画线组成。其中首字符不能为数字,同一字母的大小写在Go语言中代表不同标识。关键字无法作为变量标识符。

var x int = 10

零值

常量

声明定义常量:使用coast定义,用于存储不会改变的数据。常量不能被重新赋予任何值。定义常量可忽视变量类型,编译器可以更具常量的值来推断器类型,无类型常量的默认类型是分别是bool,rune,int,float64,complex128或string。

运算符

内置运算符
运算符优先级

字符串

介绍
Go语言中可以使用反引号或者双引号来定义字符串。反引号表示原生的字符串,即不进行转义。
双引号中可以加\n,也就是转义字符

s := "hello \n world!

反引号
不会进行转义输出


`hello \n world`

注意在Go中string类型是一种值类型,存储的字符串是不可变的,如果要修改string的内容,需要将string转换为[]byte或[]rune,并且修改后的string内容是重新生成的。
拼接
1.直接使用运算符加号拼接
2.fmt.Sprintf() 内部使用[]byte实现,不像直接使用运算符会产生很多零时的字符串,但内部逻辑复杂
3.strings.Join()
4.bytes.Buffer()
5.strings.Builder()
处理
strings包提供了许多如字符串的查询、替换、比较、截断、拆分和合并等功能。

流程控制

switch语句

		fallthrough // 表示应该从该子句的末尾流向下一个子句的第一个子句
		// 无论下一个子句的条件是否满足

select语句

// 如果没有可运行的分支,且没有default语句,

for语句
for 初始化语句;条件语句;修饰语句{}
for i,j:=0,N;i<j;i,j=i+1,j-1{}

for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 {
a[i], a[j] = a[j], a[i]
}

for-range结构

Go语言的迭代结构

if语句:后接布尔表达式。在Go语言中,当if语句没有进入下一个语句,即正文以break、continue、goto或return结尾时,省略不必要的else。
break语句:它可作用域任何形式的for循环(计数器、条件判断等),但在switch或select中,执行switch或select外面后续的代码。
continue语句:忽略剩余的循环体而直接进入下一次循环的过程
标签:某一行第一个以冒号(:)结尾的单词(Gofmt会将后续代码自动移至下一行),且标签的名称是大小写敏感的,建议全部使用大写字母。标签用于break,continue,goto语句。

ERROR:log.Panic("error encountered")

goto语句:跳转到具有相同函数内相应标签的语句,块内的goto语句无法跳到快外

编程代码的一些高级特性

作用域

局部变量
全局变量

代码结构和项目管理

这里涉及到GO可以从github中直接导包

常见的复合数据类型

处理异常

查看类型

type关键字

错误处理与defer

posted @ 2022-06-15 14:45  索匣  阅读(45)  评论(0编辑  收藏  举报