Go
从0 - 1 学习Go
zmm_mohua
这个作者很懒,什么都没留下…
展开
-
GO 语言
GO语言(把之前自己学习Go的笔记进行了一番整理,可能废话比较多,比较幼稚,不全面,请大家谅解)ps and os : 新入坑的啊!看了下,觉得GO语言没有那么规范,有点像 python 和 javaScript 的结合体,个人觉得还是 c++ 和 java 规范一点,仅代表个人观点,不喜勿喷,嘿嘿嘿!!!进入正题吧Go语言官网地址:https://studygolang.com/一、 第一个Go程序1、实例: hello.gopackage mainimport "fmt"func ma原创 2021-12-29 16:17:55 · 608 阅读 · 0 评论 -
Go 语言结构 与 基础语法
Go 语言结构 与 基础语法二、语言结构1、package main 表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。2、注释:单行注释 //多行注释 /* */3、func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)4、当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用原创 2021-12-29 16:32:59 · 212 阅读 · 0 评论 -
Go 数据类型 、变量、 常量、 运算符
Go 数据类型 、变量、 常量、 运算符四、数据类型1、布尔型true 或者 false例:var b bool = true2、数字类型整型 int、浮点型 float32、float64、复数、位的运算采用补码2.1 整型数据类型说明uint8无符号8位uint16无符号16位uint32无符号32位uint64无符号64位int8有符号8位int16有符号16位int32有符号32位int64有符号64位原创 2021-12-29 16:54:02 · 136 阅读 · 0 评论 -
GO 条件语句 与 循环语句
GO 条件语句 与 循环语句八、条件语句1、if语句格式:if 布尔表达式{ }例: if a > 10 { printf(a)}2、if…else语句格式:if 布尔表达式{ } else if 布尔表达式{ } else { }3、if嵌套语句4、switch语句(1)switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break。(2)switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行原创 2021-12-29 17:09:17 · 218 阅读 · 0 评论 -
Go 函数、 数组、 指针、 结构体、 切片
Go 函数、 数组、 指针、 结构体、 切片十、函数1、格式:func 函数名(参数列表) 返回值类型{}当有多个返回值时:func 函数名(参数列表) (返回值1类型,返回值2类型,返回值3类型){}2、函数参数(1)值传递;Go语言默认使用值传递(2)引用传递:x *int3、函数作为实参例://声明函数变量 getSquareRoot := func(x float64) float64 { return math.Sqrt(x) } /* 使用原创 2021-12-29 17:25:26 · 338 阅读 · 0 评论 -
Go - Range、 Map、 递归函数、 类型转换、 接口
Go - Range、 Map、 递归函数、 类型转换、 接口十六、范围 (Range)Go 语言中 range 关键字用于 for 循环中迭代 数组(array)、切片(slice)、通道(channel) 或 集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。nums := []int{1,2,3,4,5}for index, num := range nums{ fmt.Printf("index= %d, num= %d\n",in原创 2021-12-29 17:32:14 · 341 阅读 · 0 评论 -
Go 并发
Go 并发二十二、并发1、1)主线程是一个物理线程,直接作用在cpu上,是重量级的,非常消耗cpu资源2)协程从主线程开启,是轻量级的线程,是逻辑态,对资源消耗相对小3)golang的协程机制是重要的特点,可以轻松开启上万个协程。其他编程语言的并发机制是一般基于线程的,开启过多的线程,资源耗费大,这就突显golang在并发上的优势了2、goroutine 是轻量级线程(可以叫做协程)goroutine 的调度是由 Golang 运行时进行管理的3、goroutine的调度模型:MPG模型1原创 2021-12-29 17:38:26 · 673 阅读 · 0 评论 -
Go 文件
Go 文件二十四、文件os.file 封装了所有文件的操作File 是一个结构体1、读文件file,err := os.Open("./test.txt") if err != nil { fmt.Println("open the file err: ",err) } //创建一个*Reader,是带缓冲的 reader := bufio.NewReader(file) for { str,err := reader.ReadString('\n') //按行读取文件内容原创 2021-12-30 10:32:25 · 86 阅读 · 0 评论 -
Go 工厂模式
Go 工厂模式二十五、工厂模式golang 的结构体没有构造函数,通常可以使用工厂模式来解决这个问题实例:stu1.gopackage modeltype student struct { name string age int grade int}func NewStudent(n string,a int,g int) *student { return &student{ name: n, age: a, grade: g, }}func (s原创 2021-12-30 10:32:38 · 234 阅读 · 0 评论 -
Go 类型断言
Go 类型断言二十六、类型断言实例type Point struct { x int y int}func main() { var a interface{} var point = Point{1,2} a = point //空接口可以接收任意类型 var b Point //将接口a赋值给结构体类型b,需要进行断言 b = a.(Point) //类型断言,表示判断a是否指向Point类型的变量,如果是就转成Point类型并赋值给b,否则报错 fmt.Println(b原创 2021-12-30 10:32:48 · 89 阅读 · 0 评论 -
Go - JSON
Go - JSON二十七、json1、json格式[{"name":"李白", "age":20,"address":["北京","上海"]},{"name":"杜甫", "age":20,"address":["北京","城府"],"hobby":["足球","篮球"]}]2、json序列化json序列化 是指,将有 key-value 结构的数据类型(比如结构体、map、切片)序列化成json字符串的操作。json.Marshal(a) //a是结构体\map\切片,即要转换成json的变原创 2021-12-30 10:32:58 · 160 阅读 · 0 评论 -
Go - 反射
Go - 反射二十九、反射1、介绍1)反射可以在运行时动态获取变量的各种信息,比如变量的类型,类别2)通过反射,可以修改变量的值,可以调用关联的方法2、形式//test用来做反射func test(b interface){ //1.如何将interface{}转成reflect.Value rval := reflect.ValueOf(b) //2.如何将reflect.Value转成interface{} ival := rval.Interface() //3.如何将inte原创 2021-12-30 10:33:07 · 78 阅读 · 0 评论 -
Go - 网络编程
Go - 网络编程三十、网络编程(tcp编程)1、端口1)0号是保留端口2)1-1024是固定端口,又叫有名端口,即被某些程序固定使用,一般程序员不使用3)1025-65535是动态端口,可以使用4)一个端口只能被一个程序监听5)使用 netstat -an 可以查看本机有哪些端口在监听6)使用 netstat -anb 来查看监听端口的pid,可以结合任务管理器关闭不安全的端口2、tcp socket编程快速入门1)服务端的处理流程(1)监听端口(2)接收客户端的tcp链接,建立客原创 2021-12-30 10:33:15 · 70 阅读 · 0 评论 -
Go 时间和日期函数
Go 时间和日期函数二十三、时间和日期函数//导入time包package mainimport "fmt"import "time"func main() { //获取当前时间 now := time.Now() fmt.Println(now) //通过now获取到年月日,时分秒 fmt.Printf("年=%v\t",now.Year()) fmt.Printf("月=%v\t",int(now.Month())) //显示时英文转换为数字 fmt.Printf("日=%v原创 2021-12-30 10:32:10 · 208 阅读 · 0 评论 -
Go 小项目1 - 家庭收支记账软件
Go 小项目1 - 家庭收支记账软件一)需求1)模拟实现基于文本界面的《家庭记账软件》2)该软件能够记录家庭的收入、支出,并能够打印收支明细表二)编码1)功能1、完成主菜单的编写2、显示明细和登记收入3、登记支出三)实现实现1:teatMyAccount.gopackage mainimport ( "fmt")func main() { key := "" //声明一个变量,保存接收用户输入的选项 loop := false //声明一个变量用来判断是否要退原创 2021-12-30 10:33:22 · 266 阅读 · 0 评论 -
Go - 小项目2 - 客户信息管理系统
Go - 小项目2 - 客户信息管理系统项目2:客户信息管理系统一)需求1)模拟实现基于文本界面的《客户信息管理系统》2)实现对客户信息的插入,删除,修改,显示二)框架图1)customerView.go(界面)2)customerService.go(处理业务逻辑)3)customer.go(表示数据)model层三)编码customerView.gopackage mainimport ( "customerManage/model" "customerManage/ser原创 2021-12-30 10:31:33 · 210 阅读 · 0 评论