golang学习

news2024/11/24 1:35:05

由于期末考试没时间学算法学了一波go放松一下
这可能是我学语言最认真的一次了(
跟的是尚硅谷学完的 二倍速+快进 折腾了一周左右
网络编程部分没看 因为不懂计网 不想学(
在这里插入图片描述

  • 虽然已经很老的课了 但是顺平老师雀氏讲的太细了
  • 也是听完了
  • 自己也没时间写笔记 还有更重要的事情要做,就只是浅浅记录了一下
  • 写得也很乱 自己复习用

go≈c+py 保留了指针 如果有c/c++的基础学起来应该也会很快

go语言的hello world

package main

import (
	"fmt"
)

func main(){
   fmt.Println("hello world!")
}

数据类型

  • 字符串的字节使用 UTF-8 编码标识 Unicode 文本
  • go里面没有char

变量

如果没有声明变量类型 var 可以自动推导变量类型
和c++区别的是 如果没有声明成全局变量 也会赋“0”值

package main

import (
	"fmt"
)

func main(){
   var a= 10
   //a:=10   
   //var a int  a=10
   fmt.Printf("%T",a)
}

在这里插入图片描述
也可以这样声明(导包也可以直接一个括号

  var (
	a int
	b  bool
   )
  • 匿名变量_ 不占用内存空间,不会分配内存
  • 变量作用域首字母大写 别的包就也能访问的到

指针

和c差不多 。 空指针是nil c++里的null

匿名函数

package main

import (
	"fmt"
	_"time"
	_"runtime"
)

func main(){
  ans:=func (a int ,b int)  int{
	return a+b
  }(1,2)
  fmt.Println(ans)
}

闭包

在这里插入图片描述
请添加图片描述
请添加图片描述

  • 异常处理

![请添加图片描述](https://img-blog.csdnimg.cn/5d459b251f5f400ca38051ff900666d4.png

在这里插入图片描述

数组 切片 map 结构体

  • 这些东西都很简单 和c++差不多

在这里插入图片描述

  • 首字母大写== public 其他包也可以访问到
  • 数组是值类型!
  • 数组必须有长度 [2]int [3]int 不一样 相当于两种数据类型
  • 切片是引用类型
  • 相当于结构体 存放了首地址 容量 和长度

append底层
请添加图片描述

  • 字符串底层是结构体 ,也可以切片处理
  • string不能直接修改 修改成byte或者rune

在这里插入图片描述

  • map声明不占内存
  • 记的 slice和map 使用时需要make就行

接口

  • 接口必须把所有的方法全部实现
  • 接口是go多态的体现,继承的补充

一个简单的接口实现

package main

import (
	"fmt"
)

type i1 struct {
	a int
}

type node interface {
	solve1()
	solve2()
}

func (i i1) solve1() {
	fmt.Println(i.a)
}
func (i i1) solve2() {
	fmt.Println(i.a)
}

func main() {
	var p i1 = i1{10}
	var a node = p
	a.solve1()

}

工厂模式

go语言里面没有构造函数 所以使用工厂模式解决这个问题
在这里插入图片描述
在这里插入图片描述

json

请添加图片描述

多线程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • List item

可读可写:
在这里插入图片描述

  • 并行并发的程序涉及很多逻辑问题 写的时候要特别注意 也是go的最大特点
  • 如果只是向管道写入数据,而没有读取,就会出现阻塞
  • 写和读不同步也可以 底层已经做了优化
  • select可以解决取数据的问题 switch“有序” 它“无序”
  • 协程发现了panic 必须捕获 负责会 造成程序崩溃
  • 开启写的协程,执行完成记得关闭,否则读取管道一直等待导致死锁
  • 关于主线程提前结束可以开一个守护线程
  • 更好的解决主线程提前结束的方法link

反射

  • 主要是用来写框架 真没学太明白(
  • 可以说平常写的代码都是正射 他是反射来获取东西

在这里插入图片描述
序列化和反序列化

网络编程

等学了计网再学

数据结构

acmer 数组模拟一些ds还是很容易的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT5.14.2编译mysql-5.7.25 32位驱动办法

开发环境:Windows10QT5.14.2MySQL5.7.25 编译步骤: 1、下载安装mysql压缩包,下载地址为:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.25-win32.zip 也可以打开MySQL :: Download MySQL Community Server (Archived Ve…

Electron主进程渲染进程间通信的四种方式

在electron中进程使用 ipcMain 和 ipcRenderer 模块,通过开发人员定义的“通道”传递消息来进行通信。新的版本中electron推荐使用上下文隔离渲染器进程进行通信,这种方式的好处是无需在渲染进程中直接使用ipcRenderer发送消息,这种在渲染进程…

JWT令牌入门

上篇文章我们写了如何登录,我们着重学习Token模式下的单点登录 一、访问令牌的类型 透明令牌,是客户端存储一段引用数字,然后到达服务器指向服务器中特定的令牌 类似于,cookie中存储了sessionId他们之间的关系 自包含令牌&#x…

猿代码超算实习生,五步助力拿到高薪offer

虽说行行出状元,但是一旦入错行,那就是一辈子的事。互联网的潮水已经退去,普通人再进入也只是勉强温饱。与其朝不保夕的被裁员,倒不如提前锁定未来30年的幸福。 20大以来,芯片国产化、超算(先进计算&#…

docker的run,cmd,entrypoint分析和对比

写在前面 本文一起看下Dockerfile中经常用到的几个类似命令,RUN,CMD,ENTRYPOINT。 1:容器是怎么来的? 想要有容器我们就必须先创建镜像,而想要有镜像,我们则必须写一个用来描述想要创建的镜像…

Struts2基本架构

Struts2基本架构1、Struts2执行流程2、web.xml配置3、Action控制器3.1、核心控制器3.2、业务控制器4、Result配置5、struts.xml核心配置5.1、constant元素5.2、package元素5.3、配置文件加载顺序1、Struts2执行流程 如下例子: 执行流程如下: 浏览器将请…

Python Flask开发笔记

Python Flask开发笔记一、创建flask项目1.开发环境:2.安装Flask3.使用pycharm,创建flask项目二、flask介绍1.介绍初始flask主程序接口文件2.Flask() 类1.Flask参数解释0.sys.modules用于缓存程序导入模块名1.import_name 主程序模块名2.static_url_path …

IconJar - Mac 上的一款多功能图标素材管理工具

IconJar - Mac 上的一款多功能图标素材管理工具 IconJar 是一个多功能的图标管理工具,由世界各地的设计师和开发人员使用。在一个应用程序中搜索、组织、预览和检索图标,而不是创建大量的文件夹来存储你的收藏。这款应用针对黑暗模式进行了优化&#xff…

2022年自动化测试工具汇总——实用的功能测试工具篇

如今,UI自动化测试工具就和雨后春笋般,层出不穷。由于每种工具都有自己的重点和策略,所以总是让人无从下手。今天我们来对比现在使用比较广泛的几个UI自动化测试工具,来看看他们之间的优缺点。 首先,我们先简单介绍一下…

4.6.4、边界网关 BGP 的基本工作原理

1、力求寻找较好的路由 因特网采用分层次的路由选择协议 内部网关协议(例如:路由信息协议 RIP 或开放最短路径优先 OSPF) 它们都是设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络无需考虑自治系统外部其他方面的策略 外部…

内网渗透-src挖掘-外网打点到内网渗透-3层内网渗透测试记录-2023年1月

1、通过信息搜集,发现目标有一个外网访问的通达OA系统 2、通达OA的漏洞是非常多的,这里利用大佬写好的通达OA一键getshell工具 成功获取webshell 3、连接webshell,上传cs马儿到服务器 4、执行获取主机权限 成功上线 5、通过Ladon插件发…

百分之80新手都不知道,SEO搜索引擎优化【sitemap网站地图 配置】

Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等&am…

浅析oauth2.0及应用场景

讲OAuth2.0之前,我们先理解一个概念,授权用户和资源权限的概念授权用户:用户访问某个应用系统,该应用系统请求认证中心授权以获取这个登录用户的信息,但并没有得到这个用户的密码,这个就是OAuth2.0实现的要…

N个点,求距离最近的两个点---分治策略(1)

设平面有n个点的直角坐标是,i 1, 2, ...,n,求距离最近的2个点,距离计算: 首先这个问题是可以使用蛮力算法,一共n(n-1)/2个点对,每对点对计算需要常数的时间,蛮力算法需要的时间。 由于点对有二维的空间坐标&#xf…

(三十)Vue之回顾本地存储webStorage

文章目录webStorageLocalStoragesessionStorage改造TodoList案例为本地存储Vue学习目录 上一篇:(二十九)Vue之组件化编码流程 下一篇:(三十一)Vue之自定义事件 webStorage 使用HTML5可以在本地存储用户…

Python基础(二十二):文件操作

文章目录 文件操作 一、文件操作的作用 二、文件的基本操作 1、文件操作步骤

同时开启的revit模型和navisworks如何同步呢?

一、 Navisworks与Revit同步问题 同时开启的revit模型和同时开启的navisworks如何同步呢? 1.如图1所示打开了一个revit模型 将模型保存在指定的路径上,然后通过直接拖拽的方式在navisworks manage打开模型文件,过程中会出现读条状态,如图2所…

【MySQL进阶教程】 索引使用与设计原则

前言 本文为 【MySQL进阶教程】 索引使用与设计原则 相关知识,下边将对索引的使用(包括:验证索引效率,最左前缀法则,范围查询,索引失效情况,SQL提示,覆盖索引,前缀索引&a…

Struts2获取表单数据

Struts2获取表单数据Struts2获取表单数据1、原始Servlet方法2、属性封装3、表达式封装4、模型驱动封装Struts2获取表单数据 在Struts2中获取表单数据或提交路径的参数值的方式有4种。如下: 原始Servlet方法属性封装表达式封装模型驱动封装 1、原始Servlet方法 该…

文章书写方法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…