编程语言
未读概念圆珠笔是一个确切的用于写字的物品,而能够用于写字的物件是一个抽象概念,其中不只有圆珠笔这一个物品,代码中的int,string类型是一个确切的类型,而接口则表达了一种抽象的概念
int类型用于存储整数,string类型用于存储文本,他们非常关心自己存储了什么
接口不关心存储的东西,接口只关心能够做什么
接口类型1234567891011121314151617181920212223242526package mainimport "fmt"var t interface { talk() string //任何类型只要它声明的talk方法不接受参数并且返回字符串,那么他就可以作为接口t的值}type martian struct{}type laser intfunc (m martian) talk() string { return "martian"}func (l laser) talk() string { return "laser" ...
合并结构12345678910111213141516171819202122232425262728package mainimport "fmt"// type report struct {// sol int// high, low float64 //当我们需要更多的数据时这种写法显得不够灵活,这里的high和low也不好根据含义判断// lat, long float64// }type temperature struct { high, low float64 //在这里我们根据结构名一眼dingzhen,鉴定high,low为温度}type location struct { lat, long float64}type report struct { sol int tem temperature //在结构中插入其他的结构类型,当小的结构类型需要调整时对大结构的影响相对较小 location location}func main ...
go语言不支持类和对象,也不支持继承,但是通过go提供的结构和方法可以实现面向对象设计的概念
绑定方法到结构DMS格式,度,分,秒表示坐标,每60秒为一分,每60分为一度,编写一个decimal()方法实现将坐标转换为十进制单位为度
123456789101112131415161718192021222324package mainimport "fmt"type coordinate struct { d, m, s float64 h rune}func (c coordinate) decimal() float64 { sign := 1.0 switch c.h { case 'S', 'W', 's', 'w': sign = -1 } return sign * (c.d + c.m/60 + c.s/3600)}func main() { //布莱德柏利着陆点,南纬4度35分22.2秒, ...
编程语言
未读我们目前学的数据收集器都是针对同种类型而言,但是在实际编程中需要吧不同类型的数据综合到一起,比如一个人,姓名,年龄等等各个方面,数据类型不同就需要好几个数组或者切片之类的,明显不合适
声明结构curiosity:好奇,在例子里代表一个探测器,lat与long代表探索的经纬度
123456789101112import "fmt"func main() { var curiosity struct { lat float64 long float64 } curiosity.lat = -4.5859//采用结构体.属性名的方式赋予属性值 curiosity.long = 137.4417 fmt.Println(curiosity.lat) fmt.Println(curiosity.long)}
类型复用结构12345678910111213141516171819package mainimport "fmt"func main() { type location struct ...
编程语言
未读概念数组和映射使用序列整数作为索引查找指定元素的方式在针对某些特定元素的时候查找数据比较麻烦,而映射采用键值对的的方式存储数据,利用键去寻找指定的元素,而键的类型可以试几乎所有的类型
声明映射123456789101112131415161718package mainimport "fmt"func main() { temperature := map[string]int{ //定义一个map存放星球表面的温度 "Earth": 15, "Mars": -65, } temp := temperature["Earth"] fmt.Println("地球表面温度为", temp, "度") temperature["Earth"] = 16 fmt.Println(temperature) Venus := temperature["Venus"]//与数组切片不同的是当访问映射不存在的 ...
append函数数组中包含固定的元素,而切片只不过是指向数组的视图,这就为我们提供了更多的便利,比如为切片追加元素
太阳系中识别出了5颗矮行星,但是实际数量很可能不只5颗
123456789101112package mainimport "fmt"func main() { dwarfs := []string{"Ceres", "Pluto", "Haumea", "Makemake", "Eris"} fmt.Println(dwarfs) dwarfs = append(dwarfs, "Orcus")//append是一个可变参数的函数,可以一次性向切片追加多个元素 fmt.Println(dwarfs)}
长度和容量编写一个函数打印切片的长度和容量
123456789101112131415package mainimport "fmt"func dump(label st ...
编程语言
未读数组概念固定长度并且有序的一种集合,用于收集同种类型的元素
声明数组并访问元素声明两个数组1234567891011121314151617181920package mainimport "fmt"func main() { var name [3]string //长度为3的string类型数组,看数组名称是为了存放姓名 var age [3]int //长度为3的int类型数组,看数组名称是为了存放年龄 name[0] = "xiu" //数组的第一个元素从0开始计数,所以n个元素最大的索引为n-1 name[1] = "小明" name[2] = "小红" age[0] = 18 age[1] = 7 age[2] = 8 fmt.Printf("姓名:%v\n年龄:%v", name[0], age[0])}
注意不要索引越界,上述两个数组长度都为3,当我们访问name[3]的时候编译就会报错,千万记住索引是从0开始
快速初始化数组planets: ...
编程语言
未读函数赋值给变量气象传感器气象传感器回提供150-300区间的开氏温度,我们创建一个待实现的真实传感器以及一个随机数的虚假传感器
123456789101112131415161718192021package mainimport ( "fmt" "math/rand")type kelvin float64func fakeSensor() kelvin{ return kelvin(rand.Intn(151)+150)}func realSensor() kelvin{ return 0}func main() { var sensor func() kelvin//声明一个函数类型的变量sensor,返回值为kelevin类型 sensor = fakeSensor//注意这个地方直接吧函数fakeSensor本身赋值给sensor,没有加括号就是没有调用函数 fmt.Println(sensor())}
函数传递给其他函数需求:每两秒调用一次虚假传感器函数,那我们需要借助 ...
编程语言
未读函数需求某一块的代码需要重复执行,比如一个图书管理系统,我们不能为学校的每一个新生都写一串代码用if进行判断谁是谁来管理积分等操作,这个时候我们就需要某一块逻辑相同的代码针对不同的人来执行
函数声明使用 func 关键字声明函数
关键字 函数名(参数类型) 返回值类型{
函数体内容
}
举个栗子
12345678910111213package mainimport "fmt"func sum(a int, b int) int {//声明一个函数用于对两个整数求和,a,b在这里叫做形参 c := a + b//将a和b相加的值赋给一个新变量 return c//返回相加的值,既然有返回值,那么函数在调用的时候就需要接受或者直接打印这个值}func main() { d := sum(1, 2)//调用函数只需要在函数名后面加一个括号,函数有参数的需要传实参 fmt.Println(d)//fmt.Println(sum(1, 2))}
我们main就是一个特殊的函数,整个go程序回先去找main函数进行执行, ...
序号
类型和描述
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 类型
看着很头大,简单记忆即可,其中细分的类型还有很多,不赘述
布尔型就是简单的对还是错,true与false
go语言提供快捷的声明变量的方式,我们可以直接:=给变量进行声明和赋值
运算符(不要死背,多写代码就熟悉了)Go 语言内置的运算符
假定 A 值 ...