《Go语言核心编程》(二)

[笔记][尚硅谷韩顺平Go语言核心编程][01]1 简介:Go 语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容 Go 语言: Go = C + Python , 立即下载

接口的数据结构

非空接口初始化的过程就是初始化一个iface类型的结构,示例如下:

//src/runtime/runtime2.go

type iface struct {
	tab *itab	//itab存放类型及方法指针信息
	data unsafe.Pointer 	//数据信息
}

type itab struct {
	inter *interfacetype	//接口自身的静态类型
	_type *_type			//_type就是接口存放的具体实例的类型(动态类型)
	//hash存放具体类型的Hash值
	hash unit32				//copy of _type.hash. Used for type switches.
	_    [4]byte
	fun  [1]unitptr			//variable sized. fun[0]==0 means _type does not implement inter.
}

可以看到iface结构很简单,有两个指针类型字段。

  • itab:用来存放接口自身类型和绑定的实例类型及实例相关的函数指针。
  • 函数指针data:指向接口绑定的实例副本,接口的初始化也是一种值拷贝。
接口调用代价

1、接口实例化的过程。
2、接口的方法调用,它是一个函数指针的间接调用。

并发

这一章先介绍了语言语法对并发编程的支持,然后介绍常用的并发编程范式,最后介绍context标准库和Go语言并发调度模型(单独开坑)。

goroutine有如下特性:
  • go的执行是非阻塞的,不会等待。
  • go后面的函数的返回值会被忽略。
  • 调度器不能保证多个goroutine的执行次序。
  • 没有父子goroutine的概念,所有的goroutine是平等地被调度和执行的。
  • Go程序在执行时会单独为main函数创建一个goroutine,遇到其他go关键字时再去创建其他的goroutine。
  • Go没有暴露goroutine id给用户,所以不能在一个goroutine里面显示地操作另一个goroutine,不过runtine包提供了一些函数访问和设置goroutine的相关信息。
并发范式
  • 生成器
  • 管道(调用链)
  • 每个请求一个goroutine
  • 固定worker工作池
  • future模式
context的设计目的

context库的设计目的就是跟踪goroutine调用树,并在这些goroutine调用树种传递通知和元数据,两个目的:
(1)退出通知机制——通知可以传递给整个goroutine调用树上的每一个goroutine。
(2)传递数据——数据可以传递给整个goroutine调用树上的每一个goroutine。(用来打印log)

反射

反射就是程序能够在运行时动态的查看自己的状态,并且允许修改自身的行为。

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part1项目介绍与环境准备 看到这篇文章的你,相信对知识图谱相关概念不在陌生。知识图谱相关内容在实际开发中包含两个部分:1.知识图谱构建,2.知识图谱使用。知识图谱构建过程中涉及内容、技术都比较多。知识图谱的应用也逐渐在我们的生活中随处可见,其中基于知识图谱的问答系统就是其中的一个应用。基于知识图谱的问答系统称做KGQA(knowledge graph question answer),也有人称其为KBQA(knowledge based question answ).基于知识图谱的问答系统通常是使用的是领域知识图谱。下面就结合Git 阅读详情

相关推荐

从公式到实践:用SPSS解锁香农多样性指数的生态洞察

本文详细介绍了如何利用SPSS软件计算和应用香农多样性指数进行生态研究。从基础公式解析到SPSS实战操作,再到生态决策支持,全面展示了该指数在物种丰富度和均匀度量化中的价值。文章特别强调了SPSS操作中的关键技巧和常见误区,为生态研究者提供了一套完整的分析解决方案。

weixin_30832143的博客 465

Go语言程序设计(一)Go语言概述及基础

Go语言程序设计第一篇,基础介绍

琅琊之榜 1803

Mac上除了Homebrew,这几种安装ADB的方法你可能也需要知道(含手动配置避坑)

本文全面解析Mac上五种ADB安装方案,从Homebrew到手动配置,涵盖常见问题解决与环境变量配置。特别针对macOS High Sierra等老旧系统提供专属解法,帮助开发者高效安装Android Debug Bridge(ADB),避免常见陷阱,提升开发效率。

weixin_42546392的博客 319

【知识梳理】Go语言核心编程

基础知识 Go语言就是为了解决编程语言对并发支持不友好、编译速度慢、编程复杂这三个问题而诞生的 语言特性对比:p4 package main import "fmt" func main() { fmt.Printf("Hello world") } Go源代码特性解读: 源代码以.go为后缀 源程序默认为UTF-8编码 标识符区分大小写 语句结尾的分号...

victorzzzz的专栏 986

OSG三维渲染引擎编程学习之一:“第一章:OSG介绍” 之 “1.1 OSG简介”

第一章:OSG介绍; 1.1 OSG简介。

LuckyHanMo的博客 3220

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

zhengzaifeidelushang的博客 3290

Go语言教程(一看就会)

Go语言是一门开源的编程语言,目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力,以及在现代语言中所见到的高级特性。

小那同学的博客 9157

【python三维深度学习】python三维点云从基础到深度学习

从三维点云基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。含数据与python源码。

叶子的博客 2万+

GO 语言核心编程-全文版

努力做到通俗易懂注重Go语言体系,同时也兼顾技术细节3)在实际工作中,如何快速的掌握一个技术的分享,同时也是我们授课的思路(怎么讲解或者学习一个技术)。(很多学员反馈非常受用)第 2 章程序:就是完成某个功能的指令的集合。Golang的概述Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言:Go=C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

qq_39316391的博客 2175

Linux系统安全学习手册

Linux反弹shell Linux系统应急响应 Linux服务器安全加固 Linux下的用户、组和权限 Linux中的gcc Linux中su和sudo的用法和区别 Linux系统python2与python3共存 Linux中grep工具的使用 Linux中环境变量的设置 Linux中常见的150个命令(干货) Linux中编写Shell脚本 LNMP环境搭建Wordpress博客 LAMP环境搭建一个Discuz论坛 Linux运维比较常用的一些脚本 Linux系统中安装软

谢公子的博客 7532

16. SAP Fiori Elements 应用里图片字段(Image)的显示原理介绍

很多朋友向我反映,学习了 一段时间的 SAP Fiori Elements 开发,但是感觉整套体系对于自己来说还是个黑盒子,很多技术点,看了 SAP 官方帮助文档后,觉得自己懂了,但是一旦需要自己动手做一些东西出来时,又觉得一片茫然。 其实笔者自己也经历过这个过程。究其原因,还是大家对 Fiori Elements 一些技术细节没有理解,对 SAP 官方的知识点仅仅停留在记忆,甚至是死记硬背上面。 不过没有关系,本教程笔者会刻意设置一些练习,让大家动手,在实战中逐渐熟悉 Fiori Elements 这

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 754

《go语言高级编程》 《go语言核心变成》PDF

《go语言高级编程》 《go语言核心变成》PDF 链接:https://pan.baidu.com/s/1-2_skl5IoNAqsyHCyc5KYg?pwd=sy6p 提取码:sy6p 不谢

zb199738的博客 2736

微信小程序逆向实战:从HTTPS抓包到API接口全解构

方案原理优点缺点方案一:使用低版本微信+系统代理微信7.0以下版本未强制不走代理操作简单容易被封号,无法使用新版小程序方案二:Hook SSL层(Xposed/Frida)动态Hook Java的TrustManager或系统的SSLContext,绕过证书校验灵活可控需要Root/越狱,技术门槛高方案三:VPN转发抓包(PacketCapture)利用Android VPNService将所有流量转发到本地代理无需Root,兼容性好部分机型存在性能问题。

2201_76125261的博客 265

387集Go语言核心编程培训视频教材整理 | Golang变量(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 231

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

387集Go语言核心编程培训视频教材整理 | Golang的概述(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 283

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Go语言核心编程(二)

指针 基本介绍: 基本数据类型,变量存的就是值,也叫值类型 获取变量的地址,用&,比如:var num int,获取num的地址:&num 指针类型,变量存的是一个地址,这个地址指向的空间存的才是值 比如:var ptr *int=&num 获取指针类型所指向的值,使用:*,比如 var *ptr int,使用 *ptr获取ptr指向的值 指针细节说明: 值类型,都有对应的指针类型,形式为 *数据类型,比如int的对应的指针就是 *int,float32对应的指针类型就是 *

Despacito1006的博客 574

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Go 语言核心概念解析:开启高效编程之门(二)

  在Go语言中,命名为main包的具体特殊的含义,Go语言的编译程序会试图把这种名字的包编译为二进制可执行文件,所有用Go语言编译的可执行文件都必须有一个名为main的包,一个可执行程序有且仅有一个main包。

shsjssnn的博客 1116

【Go】P18 Go语言并发编程核心(二):Goroutine 与 Channel 的协同艺术

goroutine提供了并发执行的能力(“做什么”),而channel提供了它们之间安全、高效的通信与同步机制(“如何协作”)。通过channel,我们可以构建出清晰、健壮且高性能的并发程序,将复杂的多线程同步问题,简化为对数据流(管道)的管理。这正是 Go 语言并发模型的魅力所在。2025.11.04 金融街。

weixin_43098506的博客 1027

387集Go语言核心编程培训视频教材整理 | tcp编程(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 422

387集Go语言核心编程培训视频教材整理 | 反射(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 245

387集Go语言核心编程培训视频教材整理 | Redis(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 526

387集Go语言核心编程培训视频教材整理 | map(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 111

387集Go语言核心编程培训视频教材整理 | 数据结构(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 668

387集Go语言核心编程培训视频教材整理 | 面向对象编程(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 97

387集Go语言核心编程培训视频教材整理 | goroutine和channel(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 117

387集Go语言核心编程培训视频教材整理 | 文件操作(二)

学习视频来源:《韩顺平Go语言核心编程387集完整版》

团爸讲算法 86
上一篇: 《Go语言核心编程》笔记一
下一篇: 一文详解微服务架构
xy_cpp
博客等级 码龄10年 119粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值