练习go基础语法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haolipengzhanshen/article/details/78204443

goland 工具激活地址
https://golangcaff.com/topics/62/jetbrains-goland-201812-activates-license-server-address

参考链接
https://studygolang.com/subject/2

Go 语言的基础组成有以下几个部分:

一、基础数据类型

bool类型
数字类型:
        uint8,uint16,uint32,uint64以及对应的无符号类型
        float32,float64 浮点数
        complex64, 实部和虚部都是 float32 类型的的复数。
        complex128 实部和虚部都是 float64 类型的的复数
        byte :uint8的别名
        rune(重点):int32的别名

uintptr:无符号整型,用于存放一个指针.
字符串类型 string

go语言类型转换
type_name(expression)
type_name为类型,expression为表达式

二、变量

2.1 声明变量

2.2 声明多个变量,并进行初始化
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断

简短声明形式,使用:=赋值操作符,变量的初始化时变量的类型由系统自动推断,声明语句加上var关键字有点多余,因此可以使用赋值运算符简写.但是这种声明方式只能在函数体内,不能用于全局变量的声明和赋值.
a, b, c := 10, 20, 30

三、常量

const类型变量

四、控制流程

if else条件语句
switch分支语句
while循环语句
for range 遍历

五、函数

5.1 函数声明和使用
func function_name( [parameter list] ) [return_types] {
函数体
}
使用func关键词来定义函数,把"返回值类型"移动到了"函数形参"的后面

5.2 函数返回值
函数可返回多个值
命名函数返回值
空白符’_’,用来表示任何类型的任何值

5.3 区分开函数和方法的区别

六、包

go语言引入了包的概念,包用于组织Go源代码,提供了更好的可读性和可重用性。由于包提供了代码的封装,因此使得Go代码更加利于维护。
属于某一个包的源文件应该放到一个包名命名的文件夹中。
6.1 创建自定义包
package package_name

6.2 导入自定义包
import package_name

6.3 init函数
所有包都可以包含一个init函数,用于执行初始化任务。

七、Map集合

7.1 map创建
map_variable := make(map[key_data_type] value_data_type)
key_data_type是map的键的类型,value_data_type是map的值的类型
如果不初始化 map,那么就会创建一个 nil map。空map 不能用来存放键值对

personSalary := make(map[string] int)
personSalary[“haolipeng”] = 5000
personSalary[“zhouyang”] = 4000
personSalary[“yuxiuzhi”] = 3000
或者
personSalary := map[string] int {
“haolipeng” :5000,
“zhouyagn” :4000
}

7.2 给map添加元素
7.3 获取map中元素
7.4 从map中删除元素

八、指针

8.1 指针的声明
b := 200
var a *int = &b

8.2 声明指针变量时使用’*’,
对地址解引用时使用’&’
指针的零值是nil
不支持指针运算

8.3 指针作为函数形参

8.3 不要想函数传递数组的指针,而应该使用切片

九、结构体

结构体指针
结构体或结构体指针作为函数形参
结构体代替类
在像 Java 这样的 OOP 语言中,是使用构造器来解决这种问题的。一个合法的对象必须使用参数化的构造器来创建,在Go语言中可以自己实现New函数返回创建好的结构体来让外部包引用,而非直接引用结构体。
![在这里插入图片描述](https://img-blog.csdn.net/20181003090401400?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhb2xpcGVuZ3poYW5zaGVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
组合代替继承

十、数组和切片(需要细化一点)

切片相当于动态数组,可以追加元素,在必要时使切片的容量增大. 

var slice1 []type = make([]type, len)
也可以简写为
slice1 := make([]type, len)
type:切片的类型
len:切片的长度

go接口
golang中方法和函数是不同的
函数则是独立的程序实体。我们可以声明有名字的函数,也可以声明没名字的函数,也可以把它们当成普通值来传递。
方法需要与名字,不能当成值来看待,必须隶属于某一个类型,方法所属的类型会通过其声明中的接收者(receiver)声明。

func (接收者类型声明) SetName(name string) {
}
go语言的嵌入字段(接口类型或结构体类型嵌入),是变相实现了C++语言中的组合

方法隶属的类型其实并不局限于结构体类型
go小写的只能包内访问。

如何向函数传递数组参数

var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
[5]float32表明元素类型是float32,元素个数是5,
后面的{1000.0, 2.0, 3.4, 7.0, 50.0}是实际初始化的值

猜你喜欢

转载自blog.csdn.net/haolipengzhanshen/article/details/78204443