go语言特点 天然支持高并发 语法简单,去掉很多臃肿的东西 优化的内存分配和垃圾处理 完善的标准库 go安装 下载:Go下载Go语言中文网Golang中文社区(studygolang.com) goversion判断是否安装成功 配置环境变量GOROOT,GOPATH goenv查看环境变量配置 goland开发工具安装 DownloadGoLand:AGoIDEwithextendedsupportforJavaScript,TypeScript,anddatabases(jetbrains.com) 第一个go程序(HelloWorld) ​当编译器发现某个包的名字为main时,它一定...

  c7AEHW9VXsid   2023年11月02日   42   0   0 Go

流程控制 选择结构(分支语句) ​因为switch只能匹配固定值,推荐使用if-else做条件筛选 if-else判断 packagemain import"fmt" funcmain(){ vartmpAint fmt.Scanln(&tmpA) iftmpA>=90{ fmt.Println("tmpA>=90") }elseiftmpA<90&&tmpA>=60{ fmt.Println("tmpA<90&&tmpA>=60") }else{ fmt.Println("tmpA<6...

  c7AEHW9VXsid   2023年11月02日   59   0   0 Go

数组 ​数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整形、字符串或者自定义类型(结构体、接口)。数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的。 ⭐:在其他语言中数组大多是引用类型,但是在go语言中,数组是值类型 声明方式 var+数组名+[数组长度]+数组数据类型(数组内部初始化全为0) //声明一个长度为10的整型数组array,并初始化 vararray[10]int array=[10]int{0,1,2,3,4,5,6,7,8,9} 数组名+":="+[数组长度]+数据类型...

  c7AEHW9VXsid   2023年11月02日   42   0   0 Go

切片 ​Go语言切片是一种建立在数组类型之上的抽象,它构建在数组之上并且提供更强大的能力和便捷。解决了数组长度不可变等缺陷 声明切片 ​切片的数据结构非常小,只有三个字段:指向底层数组的指针,切片长度,切片容量。切片长度是指切片的真实长度,切片容量是指切片的开始位置到底层数组的末尾的长度,一般来讲切片长度要小于等于底层数组的长度也就是切片容量 ​cap()用来计算切片容量,len()用来计算切片长度,所以有0<=len()<=cap() var切片名+[]+数据类型(声明切片但不初始化,那么这个切片的默认值为nil,长度为0) varslice[]int slice:=ma...

  c7AEHW9VXsid   2023年11月02日   95   0   0 Go

Map ​哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的value。 ​在Go语言中,一个map就是一个哈希表的引用,map类型可以写为map[K]V,其中K和V分别对应key和value。map中所有的key都有相同的类型,所有的value也有着相同的类型,但是key和value之间可以是不同的数据类型。 创建map //使用make创建map robotName:=make(map[string]string) //通过字面值创建map,同时还能初始化一系列键值对 ...

  c7AEHW9VXsid   2023年11月02日   82   0   0 Go

结构体 ​结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员 结构体声明 type+结构体名+struct+{成员列表} ​⭐如果结构体成员名字是以大写字母开头的,那么该成员就是导出的。这是Go语言导出规则决定的。一个结构体可能同时包含导出和未导出的成员。结构体名也同样适用此规则 //声明的一个结构体picture,里面有两个成员:color和background typePicturestruct{ Colorstring Backgroundstring//首字母大写,在包外可以访问 valueint//首字母小写,只能在包内使用 } //声明...

  c7AEHW9VXsid   2023年11月02日   57   0   0 Go

接口 ​接口类型是对其它类型行为的抽象和概括,因为接口类型不会和特定的实现细节绑定在一起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力 接口的特点 可以包含0个或多个方法的签名 只定义方法的签名,不包含实现 实现接口不需要显式的声明,只需实现相应方法即可 接口实现 ​接口里没有具体的方法实现,只有方法声明!!! typeShowInfointerface{ ShowColor() ShowArea() } ​如果一个变量含有了多个interface类型的方法,那么这个变量就实现了多个接口,如果一个变量只含有了1个interface的方部分方法,那么这个变量没有实现这个接...

  c7AEHW9VXsid   2023年11月02日   100   0   0 Go

匿名函数闭包 匿名函数 ​顾名思义,就是没有名字的函数。。。 func(){ fmt.Println("我就是匿名函数") } 匿名函数的两种执行方法 将匿名函数赋给一个变量 定义后立即执行匿名函数 //讲匿名函数赋给一个变量 tmp:=func(){ fmt.Println("我是匿名函数") } tmp() //定以后立即执行匿名函数(在函数定义之后加小括号,表示直接运行) func(){ fmt.Println("我是匿名函数") }() 闭包 ​闭包是由函数和与其相关的引用环境组合而成的实体,个人认为就是把一个函数以及函数所用到的参数用另外一个函数包起来,保证函数多次运行的时...

  c7AEHW9VXsid   2023年11月02日   78   0   0 Go

异常处理 panic异常处理 ​如果出现了panic异常,那么会停止当前函数的运行,然后会找recover()方法,如果没有的话,就会报错退出程序,如果有就会执行recover的方法体中的方法 ​我们可以使用defer延迟处理函数来捕获panic异常,用recover()来从错误场景中恢复,必须的在defer修饰的方法中使用,不然不生效,panic抛出异常,defer具备延迟处理功能,所以最后这种兜底的活只能defer来做 //定义一个带有panic异常的方法 funcTest01(tmpint)string{ fmt.Println("Thisisatest!") //如果传入的参数是负...

  c7AEHW9VXsid   2023年11月02日   115   0   0 Go

泛型 问题解决 一个计算sum的函数 funcsum(slice[]int)int{ varresint for_,value:=rangeslice{ res+=value } returnres } ​如果需要提供对int,float64,string三种数据类型的求sum函数,那么不使用泛型的情况下就需要单独写三个函数,此时就需要使用泛型这种概念,来避免重复代码出现 //这里中括号中括起来的就是泛型的定义,将这三种数据类型定义为T泛型,同时使用T泛型来定义入参和返回值的数据类型 funcSum[Tint|float64|string](slice[]T)T{ varres...

  c7AEHW9VXsid   2023年11月02日   83   0   0 Go

协程 进程和线程 进程 ​当运行一个应用程序的时候,操作系统会为这个应用程序启动一个进程。可以将这个进程看作一个包含了应用程序在运行中需要用到和维护的各种资源的容器。这些资源包括但不限于内存地址空间、文件和设备的句柄以及线程 线程 ​一个线程是一个执行空间,这个空间会被操作系统调度来运行函数中所写的代码。每个进程至少包含一个线程,每个进程的初始线程被称作主线程。因为执行这个线程的空间是应用程序的本身的空间,所以当主线程终止时,应用程序也会终止。操作系统将线程调度到某个处理器上运行,这个处理器并不一定是进程所在的处理器 并发和并行 并发 ​并发是指在一个逻辑处理器同时管理很多事情,这些事情可能只...

  c7AEHW9VXsid   2023年11月02日   20   0   0 Go

Runtime包 GOMAXPROCS() ​用来设置可以并行计算的CPU核数最大值,并返回之前的值,具体使用方法上一篇有些,这里不再赘述 Gosched() ​用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候从该位置恢复执行 Goexit() ​用于立即中止当前goroutine的运行(中止所在协程),而并不影响其他goroutine。⭐注意!Goexit()在中止当前协程前,还是会运行当前goroutine还没有执行的defer语句,切记,不允许在主函数调用Goexit(),会导致panic异常 举个栗子 //定义两个函数,Test...

  c7AEHW9VXsid   2023年11月02日   27   0   0 Go

channel(一) ​channel用于goroutines之间的通信,让它们之间可以进行数据交换。像管道一样,一个goroutine_A向channel_A中放数据,另一个goroutine_B从channel_A取数据 channel基本语法 //因为channel是指针类型的数据类型,所以通过make来分配内存 //使用make声明一个channel,里面可以存放string类型的数据 channel:=make(chanstring) //将tmp送到channel中 channel<tmp //从channel中接受数据给tmp tmp:=<channel //从cha...

  c7AEHW9VXsid   2023年11月02日   31   0   0 Go

Java2 java的内存划分 程序计数器,本地方法栈,虚拟机栈,堆,方法区(🌟) 内存划分 作用 堆内存 给对象提供存放空间 虚拟机栈 给方法提供运行空间 方法区 存放所有类相关的数据 本地方法栈 被native修饰的方法,java给本地调用的方法提供空间 ​类的方法以及其他属性都存在于本地方法区当中,当运行java时,栈就会给方法分配内存空间(入栈),运行结束后,栈会回收内存空间(出栈),所有引用数据类型(对象)都是存放在堆空间中,栈空间存放的是对象类型的内存地址,堆空间里对象的生命周期要比栈空间的数据长 实现swap交换函数 ​因为普通数据类型都存储在栈...

  c7AEHW9VXsid   2023年11月01日   40   0   0 Java

面向对象1 面向对象,更在乎的结果,而过程的实现并不重要 IDea快捷键(基础版) 快捷键 作用 ctrl+/ 快捷注释 ctrl+shift+/ 多行注释 ctrl+d 快速复制 ctrl+shift+up/down 移动代码行数 ctrl+z 撤回 ctrl+o 快速重写父类函数 ctrl+alt+l 自动格式化代码 ⭐printf格式化传参(输出) 参数 对应数据类型 %d 整型 %f 浮点型 %s 字符串 %b 布尔型 %c 字符型 %n 换行 //pringln字符串拼接输出 System.out.p...

  c7AEHW9VXsid   2023年11月01日   59   0   0 Java

面向对象2 访问修饰符 private default protected public 当前类 ✔️ ✔️ ✔️ ✔️ 同一个包 ✖️ ✔️ ✔️ ✔️ 不同包 ✖️ ✖️ ✔️ ✔️ 无关类 ✖️ ✖️ ✖️ ✔️ 参数传递 基本类型和String类型的参数传递(值传递) ​在进行基本类型的参数传递是,传的是参数的值,并不是参数本身!当main方法调用其他方法时,改变的只是被调用的方法的参数,与main方法内的参数无关。当方法执行结束后,所有的参数对象都会被gc自动销毁回收。 引用类型的参数传递(内存地址传递) ​引用数据类型非常多,大致包括:​类、接口类...

  c7AEHW9VXsid   2023年11月01日   49   0   0 Java

多态 编译时的多态:方法重载 运行时的多态:动态绑定 多态的三大前提 类之间要有继承关系 要出现方法重写 父类的引用指向了子类的对象 测试样例 //定义Person类 publicclassPerson{ publicStringname; publicStringsex; publicintage; publicPerson(Stringname,Stringsex,intage){ this.name=name; this.sex=sex; this.age=age; } publicvoideat(){ System.out.println("Person=>eat()"); ...

  c7AEHW9VXsid   2023年11月01日   56   0   0 Java

使用第三方jar包,完成get/set操作 Lombok,结合特殊的注解,实现setter和getter的自动生成 导入jar包 使用插件Lombok 在类里import即可使用 importlombok.AllArgsConstructor; importlombok.Data; importlombok.NoArgsConstructor; //使用注解@Data,在类编译的时候,自动给class文件生成getter,setter,toString以及其他方法 @Data //自动生成无参构造 @NoArgsConstructor //自动生成有参构造 @AllArgsConstru...

  c7AEHW9VXsid   2023年11月01日   59   0   0 Java

异常处理(try-catch) 错误的种类 一般来讲,程序出现错误的时候,大致情况有三种: 语法错误 运行时错误,指的是各程序运行的时候,出现的一些没有想到的问题,比如除数为0,比如数组下标越界等等 逻辑错误,运行结果和与其结果不一致,俗称bug ⭐Java中的异常处理机制主要用于处理运行时错误 异常的定义 ​运行时发生的错误,叫做异常,处理这些异常的代码叫做异常处理,一旦发生异常,程序将会中止在异常发生的地方,之后的代码都不会被运行 publicstaticvoidmain(String[]args){ //这句输出会抛出异常 System.out.println(1/0); //这句输...

  c7AEHW9VXsid   2023年11月01日   49   0   0 Java

comparator比较器 ​Comparator不同于Comparable,使用更加的灵活,可以在不同场景下使用比较器,实际开发中,更推荐comparator比较器 //新建一个学生类,作为栗子 publicclassStudent{ privateintsno; privatefloatheight; privatefloatweight; } //单独定义一个比较器类StudentHeightComparator,实现了Comparator接口里面的compare方法 publicclassStudentHeightComparatorimplementsComparator<St...

  c7AEHW9VXsid   2023年11月01日   77   0   0 Java
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~