
获得徽章 0
- #青训营 x 字节后端训练营# 今天这一篇讲的是Go语言的语言范围,Go 语言中 range 关键字用于for循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引值,在集合中返回 key-value 对的 key 值。
对于映射,它返回下一个键值对的键。Range返回一个值或两个值。如果在Range表达式的左侧只使用了一个值,则该值是下表中的第一个值。展开评论点赞 - #青训营 x 字节后端训练营# 今天的这一篇讲的是Go 语言切片(Slice)。Go 语言切片是对数组的抽象。
Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
定义切片额方式有很多种:1.可以声明一个未指定大小的数组来定义切片;var identifier []type;
2.使用make()函数来创建切片:var slice1 []type = make([]type, len);
3.也可以简写为:slice1 := make([]type, len);
4.可以指定容量,其中capacity为可选参数:make([]T, length, capacity);
这里 len 是数组的长度并且也是切片的初始长度。
初始化也有很多种方式:1.直接初始化切片,[]表示是切片类型,{1,2,3}初始化值依次是1,2,3.其cap=len=3,s :=[] int {1,2,3 };
2.初始化切片s,是数组arr的引用,s := arr[:] ;
3.将arr中从下标startIndex到endIndex-1 下的元素创建为一个新的切片,s := arr[startIndex:endIndex] ;
4.缺省endIndex时将表示一直到arr的最后一个元素s := arr[startIndex:] ;
5.缺省startIndex时将表示从arr的第一个元素开始:s := arr[:endIndex] ;
6缺省startIndex时将表示从arr的第一个元素开始.s1 := s[startIndex:endIndex];
7.通过内置函数make()初始化切片s,[]int 标识为其元素类型为int的切片:s :=make([]int,len,cap) 。展开评论点赞 - #青训营 x 字节后端训练营# 今天这一篇讲的是Go语言的结构体基础知识。
Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性:
Title :标题
Author : 作者
Subject:学科
ID:书籍ID
结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:
如果要访问结构体成员,需要使用点号 (.) 操作符,格式为:"结构体.成员名"。
结构体类型变量使用struct关键字定义,实例如下:展开评论点赞 - #青训营 x 字节后端训练营# 今天这一篇讲的是GO语言的指针。Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。
接下来让我们来一步步学习 Go 语言指针。
我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址。
Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。
func main() {
var a int = 10
fmt.Printf("变量的地址: %x\n", &a )
}
这样就能得到a的地址了。
一个指针变量可以指向任何一个值的内存地址。类似于变量和常量,在使用指针前需要声明指针。
var ip *int /* 指向整型*/
var fp *float32 /* 指向浮点型 */
指针使用流程:
定义指针变量。
为指针变量赋值。
访问指针变量中指向地址的值。
在指针类型前面加上 * 号(前缀)来获取指针所指向的内容。
当一个指针被定义后没有分配到任何变量时,它的值为 nil。
nil 指针也称为空指针。
nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。
一个指针变量通常缩写为 ptr。展开评论点赞 - #青训营 x 字节后端训练营# 今天这一篇讲的是GO语言的数组。Go 语言跟C语言一样提供了数组类型的数据结构。数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。
相对于去声明number0, number1, ..., and number99的变量,使用数组形式numbers[0], numbers[1] ..., numbers[99]更加方便且易于扩展。
var balance [10] float32 这个是用来声明数组的一行代码。
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} 这个是初始化数组的一行代码。
其中初始化数组中 {} 中的元素个数不能大于 [] 中的数字。
如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小: balance[4] = 50.0
数组元素可以通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。
var salary float32 = balance[9]
salary := balance[9]展开评论点赞 - #青训营 x 字节后端训练营# 今天的这一篇讲的是GO语言的变量作用域。作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。
Go 语言中变量可以在三个地方声明:
1.函数内定义的变量称为局部变量;
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。
以下实例中 main() 函数使用了局部变量 a, b, c:
2.函数外定义的变量称为全局变量;
在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。
全局变量可以在任何函数中使用,以下实例演示了如何使用全局变量:
3.函数定义中的变量称为形式参数;
形式参数会作为函数的局部变量来使用。实例如下:
以上输出结果分别为展开评论点赞 - #青训营 x 字节后端训练营# 这一篇讲的是GO语言的函数的基础知识。
函数是基本的代码块,用于执行一个任务。
Go 语言最少有1个 main() 函数。
你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。
函数声明告诉了编译器函数的名称,返回类型和参数。
Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的分量个数。
GO语言的函数格式为:func function_name( [parameter list] ) [return_types]{
函数体
}
以下是对其格式的解析:
func:函数由 func 开始声明
function_name:函数名称,函数名和参数列表一起构成了函数签名。
parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序及参数个数。参数是可选的,也就是说函数也可以不包含参数。
return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
函数体:函数定义的代码集合。展开评论点赞 - #青训营 x 字节后端训练营# 这一篇讲的是Go语言的switch语句。
switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。
switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。
语法一般是如图一这样的。
变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。展开评论点赞 - #青训营 x 字节后端训练营# 这一篇讲的是Go语言的break语句。
Go 语言中 break 语句用于以下两方面:
1.用于循环语句中跳出循环,并开始执行循环之后的语句;
2.break在switch(开关语句)中在执行一条case后跳出语句的作用。
运行结果为:a 的值为 : 10
a 的值为 : 11
a 的值为 : 12
a 的值为 : 13
a 的值为 : 14
a 的值为 : 15code.juejin.cn
展开评论点赞