GO语言入门笔记
GOGOGO
qq_23569917
这个作者很懒,什么都没留下…
展开
-
GO语言中的模拟"继承"
go语言中的机构体可以模拟其他语言中的class的类 继承,把一个结构体放在例外一个结构体中相应的结构提就会获取到对应结构体的字段,该字段会产生 字段提升…package mainimport "fmt"func main() { p := new(person) p.name="axing" p.age=18 s:=new(stu) s.shcool="四川大学" fmt...原创 2019-12-27 15:01:19 · 212 阅读 · 0 评论 -
GO语言中的结构体
package mainimport "fmt"func main() { //初始化结构体 //1.第一种方式 var p1 person p1.name="阿星" p1.age=18 p1.sex="男" p1.address="四川省" fmt.Println(p1) //第二种方式 p2:=person{} p2.age=18 p2.name="兴业" p2....原创 2019-12-26 17:22:51 · 190 阅读 · 0 评论 -
GO语言中的闭包
package mainimport "fmt"//import "fmt"func main() { res := increment()// 接受了函数返回值 这时候这个函数相当于是func() int{i++ return i} r := res() fmt.Println(r) //1 r2 := res() fmt.Println(r2)//2 r3 :=res() ...原创 2019-12-24 22:20:07 · 146 阅读 · 0 评论 -
GO语言回调函数
package mainimport "fmt"//import "fmt"func main() { fmt.Printf("%T\n",add) fmt.Printf("%T\n",oper) res:=add(1,5) fmt.Printf("%d\n",res) res2:=oper(1,8,add) fmt.Printf("%d\n",res2)}func add(...原创 2019-12-24 21:03:03 · 235 阅读 · 0 评论 -
map和slice结合使用
package mainimport "fmt"func main() { m1 := map[string]string{ "name": "axing", "age": `18`, } m2 := map[string]string{ "name": "xingye", "age": `28`, } m3 := map[string]string{ "...原创 2019-12-19 22:31:24 · 553 阅读 · 0 评论 -
GO语言内建类型map
map是GO中的内置类型,他将一个值与一个"键"关联起来,可以使用相应的键检索值,Map是一种无序的键值对的集合,它最重要的一点是通过key 来快速检索数据,key类似于索引,通过key可以访问值,key是自定义的,他是无序的map是一种集合,所以可以像迭代数组和切片那样迭代它,不过map是无序的,无法决定他返回的顺序,这是有因为map是使用的hash标实现的,也是引用类型,map是无...原创 2019-12-19 22:30:12 · 151 阅读 · 0 评论 -
slice底层数组view
扩展:package mainimport "fmt"func main() { arr1 := [...]int{0, 1, 2, 3, 4, 5, 6, 7} fmt.Printf("arr1的长度:%d arr1:的容量:%d arr1的地址:%p\n", len(arr1), len(arr1), &arr1) s1 := arr1[2:6] fmt.Print...原创 2019-12-19 17:06:40 · 220 阅读 · 0 评论 -
GO语言的slice是引用类型以及浅copy和深copy
package mainimport "fmt"func main() { arr1 := [...]int{1, 2, 3} arr2 := arr1 //值传递 arr2[0] = 100 fmt.Println(arr1, arr2) //[1 2 3] [100 2 3] fmt.Printf("arr1地址:%p\n...原创 2019-12-18 20:33:56 · 406 阅读 · 0 评论 -
GO语言通过已有的数组创建切片
package mainimport "fmt"func main() { arr1 := [11]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} slice1 := arr1[:4] //从头开始下标可以不用写,第二个参数不包含末尾 slice2 := arr1[1:] //从下标1 “2”开始取到末尾 slice3 := arr1[3:8] /...原创 2019-12-18 18:11:42 · 283 阅读 · 0 评论 -
slice内存分析
切片是引用类型的数据每一个切片引用了底层的数组切片本身不存储任何数据,都是这个底层的数组存储,所以修改切片也就是修改这个数组中的数据向切片中添加数据的时候,如果没有超过容量,直接添加,如果超过容量自动增长切片一旦扩容,就重新指向一个新的底层数组package mainimport "fmt"func main() { slice1 := []int{1, 2, 3, 4} ...原创 2019-12-18 16:38:23 · 285 阅读 · 0 评论 -
GO语言中的slice切片简单认识
golang中,有一个“罕见”的复合类型,叫切片,切片是基于数组的,golang和其它语言不一样,在golang中,数组是不可变的,对数组进行类型转换等操作都会导致golang隐式的申请一块内存,然后将原数组的内容复制到这块内存。数组是不可变的,这就决定了字符串也是不可变的,因为字符串底层就是一个byte数组实现的。在实际的开发当中,我们经常使用的是切片,而不是数组。定义slice的方式v...原创 2019-12-17 23:15:32 · 164 阅读 · 0 评论 -
GO语言数组的排序
一般两种:升序,降序排序算法:冒泡排序,插入 排序,选择排序,希尔排序,堆排序,快速排序…冒泡排序:从第一个开始以此对比相邻的元素,如果他们的顺序(从大到小)就把他们调换过来!func main() { mysort()}func mysort() { arr1 := [13]int{12, 14, 56, 17, 234, 233, 45345, 4623, 123124...原创 2019-12-17 19:16:39 · 2367 阅读 · 1 评论 -
GO语言数组类型是值类型
按照数据的划分数为两大类型1.基本类型 int ,float,string, bool…2.复合类型 array slice map function pointer channel…GO语言中的数组是值类型并不是引用类型(内存地址),能够被值传递的类型 可以成为值类型;几个基本类型都是值类型,package mainimport "fmt"func main() { arr1...原创 2019-12-17 18:22:16 · 1026 阅读 · 0 评论 -
GO语言遍历数组以及range遍历
普通的遍历func main() { arr()}func arr() { arr1 := [5]int{1, 2, 3, 4, 5} for i := 0; i < len(arr1); i++ { fmt.Println(arr1[i]) }}使用range遍历Go 语言中 range 关键字用于for循环中迭代数组(array)、切片(slice)、链表(c...原创 2019-12-17 17:31:23 · 2028 阅读 · 0 评论 -
GO语言数组的内存
GO语言数组有一个16进制的首地址(内存地址)使用%p可以查看!%p(以十六进制(基数为16)表示的一个值的地址,前缀为0x,字母使用小写的a-f表示)package mainimport "fmt"func main() { arr()}func arr() { //创建数组 ---数组名 长度 类型 var arr1 [4]int //数组的访问,下标设置 arr...原创 2019-12-17 15:26:20 · 606 阅读 · 0 评论 -
GO语言数组
数组的声明package mainimport "fmt"func main() { arr()}func arr() { //创建数组 ---数组名 长度 类型 var arr1 [4]int //数组的访问,下标设置 arr1[0] = 1 arr1[1] = 2 arr1[2] = 3 arr1[3] = 4 fmt.Println(arr1[0]) fm...原创 2019-12-16 22:12:21 · 129 阅读 · 0 评论 -
GO语言生成随机数
http://docscn.studygolang.com/pkg/文档链接math 包提供了基本常数和数学函数。math下面的rand 包实现了伪随机数生成器.种子数rand.seed(n)//种子数必须要改变 否则随机数只会取第一次随机出来的数rand.Intn(n)//得到从0到 (n-1)的随机数 //package mainimport ( "fmt" "math/...原创 2019-12-16 20:46:45 · 264 阅读 · 0 评论 -
Go语言goto语句
package mainimport "fmt"func main() { var a = 10LOOP: fmt.Println("执行了goto") for a < 20 { if a == 15 { a += 1 //a满足条件 15+1 goto LOOP // 因为上面条件满足了 到这条goto语句就会跳转到LOOP:执行 } fm...原创 2019-12-16 19:29:05 · 205 阅读 · 0 评论 -
fmt包的格式化输出输入Printf
格式含义%%一个%字面量%b一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数%c字符型。可以把输入的数字按照ASCII码相应转换为对应的字符%d一个十进制数值(基数为10)%e以科学记数法e表示的浮点数或者复数值%E以科学记数法E表示的浮点数或者复数值%f以标准记数法表示的浮点数或者复数值%g以%e或者%f表示的浮点数或者复数,...原创 2019-12-16 15:39:35 · 197 阅读 · 0 评论 -
GO执行的原理
一、GO源码文件的分类如上图:分为三类文件1、命令源码文件声明自己属于的main代码包、包含无参数声明和结果声明的main函数命令源码文件被安装以后,GOPATH如果只有一个工作区,那么相应的可执行文件会被存放当前工作区的bin文件夹下,如果有多个工作区,就会安装在GOBIN指向的目录下命令源码文件是GO程序的入口同一个包下面有多个命令源码文件的话无法通过go install go ...原创 2019-12-14 19:13:58 · 689 阅读 · 0 评论 -
GO的一些包和目录区分
#包的声明,package mainimport "fmt" //导入包,,func main() { fmt.Println("hello world")}1.在同一个包下的文件属于同一个工程文件,一般是不需要import关键字来导入的!2.在同一个包下所有文件的package名字都必须是一致的(建议都是该目录的文字)main函数所在的目录的包名必须是main总体来说,目...原创 2019-12-14 18:12:17 · 278 阅读 · 0 评论 -
GO运行方式
go install …/包名/第2种运行方式在1.13.x版本 以上的版本 需要 go env的GO111MODULE不能为on状态在编译生成go程序的时候,GO会去GO源文件的src和工作项目的src下面去找程序包,在程序包里,自动找main包的main函数作为程序入口,然后进行编译...原创 2019-12-14 17:57:17 · 422 阅读 · 0 评论 -
GO安装依赖包
go 安装依赖包一般会通过四种路径1. github.com/2. golang.org/3. gopkg.in/4. honnet.co/ ~~比如我们可以通过 go get github.com/xxx 来下载安装包下载好之后, 通过 go install github.com/xxx 来安装包安装包会下载到 $GOPATH/src 文件中安装后的执行文件在 $GOPAT...转载 2019-12-14 17:36:32 · 3420 阅读 · 0 评论 -
GO语言的条件语句
ifGO语言中的if 后面的表达式不需要使用括号func iftest(a int) { if a < 100 { fmt.Println("a小于100") } else if a > 100 { fmt.Println("a大于100") } else { fmt.Println("其他") }}Go语言中的if语法 可以像其他语言中的for循环一样...原创 2019-12-13 21:13:38 · 180 阅读 · 0 评论 -
GO语言中的常量和GO的"枚举"
常量是一个简单值的标识符,一旦定义不能改变,常量中的值只能是布尔,数字型(整数型、浮点型和复数)和字符串型。GO语言常量中不要全部大写,因为GO语言中的大小写是有含义的,比如首字母大写代表public常量的定义://1、显式类型const 常量名 类型 = 值const path string = "/www/index.html"//2、隐藏类型const 常量名= 值con...原创 2019-12-13 19:06:52 · 184 阅读 · 0 评论 -
GO语言中的内建变量类型和
bool string(u)int (u)int8 (u)int16 (u)int32 (u)int64 uintptr(指针)byterunefloat32float64complex64complex128GO语言没有隐私类型转换,只有强制类型转换,math.Sqrt()里面的参数要求是float64的类型 以下会报错 需要强制转换package mainimpo...原创 2019-12-13 18:12:50 · 193 阅读 · 0 评论 -
GO语言基础语法定义变量的方法小总结
package mainimport "fmt"//函数入口func main() { fmt.Println("hello world") //var s = "测试"//优先级比包变量要高 fmt.Println(s) //包变量在入口函数里都够找到 variable() variableInitValue() variableMoreValue() variableM...原创 2019-12-12 23:16:46 · 244 阅读 · 0 评论 -
Linux下面搭建GO开发环境和IDEA的配置
登陆https://golang.org/ 进行下载国内用户登陆GOLANG中国进行下载更具自己系统下载自己对应的版本,在ubuntu下使用uname -a 命令可以查看系统相关信息为的是64位,这里使用的是1.13.X版本以上的,因为1.13.x版本添加了国内的依赖镜像安装的时候解压即可,建议安装在/opt目录下!使用tar -zxvf对文件进行解压缩:axing@axing8...原创 2019-12-12 20:10:25 · 1010 阅读 · 0 评论