国外网站为啥速度慢垂直电商网站如何做内容运营

web/2025/10/2 15:15:06/文章来源:
国外网站为啥速度慢,垂直电商网站如何做内容运营,南京 网站建设模板价格,08影院Wordpress函数 需要声明原型支持不定参数 func sum(numbers ...int)int支持返回多值支持递归支持命名返回参数 // 命名返回参数 func add(a, b int) (sum int) {sum a breturn // 这里不需要显式地写出返回值#xff0c;因为已经在函数签名中声明了命名返回参数 } 支持匿名函数、闭包…函数 需要声明原型支持不定参数 func sum(numbers ...int)int支持返回多值支持递归支持命名返回参数 // 命名返回参数 func add(a, b int) (sum int) {sum a breturn // 这里不需要显式地写出返回值因为已经在函数签名中声明了命名返回参数 } 支持匿名函数、闭包函数也是一种类型函数可以赋值给变量本质函数指针一个包中能有名字一样的函数不支持重载!等等均不支持)默认参数 简单demo package mainimport fmt//测试函数 func test(x, y int, s string) (int, string) {n : x yreturn n, fmt.Sprintf(%s,%d\n, s, n) } func main() {a, b : test(1, 2, 你好)// _可以忽略某些值的返回fmt.Println(a)fmt.Println(b)} 回调函数demo 回调函数本质其实就是函数指针作为形参传递给了函数增加了代码的灵活度。 package mainimport fmt// 回调函数1 func testFunc(fn func() int) int {return fn() }// 定义函数类型 type FormatFunc func(s string, x, y int) stringfunc format(fn FormatFunc, s string, x, y int) string {return fn(s, x, y) }func formatHelper(s string, x, y int) string {return fmt.Sprintf(s, x, y) }func main() {s1 : testFunc(func() int {return 100})fmt.Println(s1) //100//匿名函数回调进行格式化返回string//s2 : format(func(s string, x, y int) string {// return fmt.Sprintf(s, x, y)//}, %d %d, 10, 20)s2 : format(formatHelper, %d %d, 10, 20)fmt.Println(s2) }闭包demo 闭包很简单可以理解为返回值是一个函数指针其他的再看就很好理解了。 https://juejin.cn/post/6844903793771937805 package mainimport (fmt )//返回函数指针 func()int func a() func() int {i : 0b : func() int {ifmt.Println(i)return i}return b }func main() {//a执行完返回func() int 的这个函数指针其中赋值给c//那么这里面保存有这个b匿名函数的所有信息实现了自增可以不用定义全局变量c : a()c()c()c()//因为这个是函数指针a() //不会输出i }递归demo package mainimport fmt// 递归1求阶乘 func Factorial(n int) int {if n 1 {return 1}return n * Factorial(n-1) }// 递归2斐波那契数列 func Fibonaci(n int) int {if n 0 {return 0}if n 1 {return 1}return Fibonaci(n-1) Fibonaci(n-2) } func main() {fmt.Println(5!, Factorial(5))fmt.Println(前10项斐波那契数列)for i : 0; i 10; i {fmt.Printf(%d\t, Fibonaci(i))} }异常处理demo 参考文档异常处理 · Go语言中文文档 使用panic抛出错误defer捕获错误一般panic中抛出异常defer中捕获异常之后正常处理。 panic: 内置函数panic后的代码不执行 interface{}直到goroutine整个退出并报告错误 recover: 1.利用recover处理panic指令defer 必须放在 panic 之前定义另外 recover 只有在 defer 调用的函数中才有效。否则当panic时recover无法捕获到panic无法防止panic扩散。 2.recover 处理异常后逻辑并不会恢复到 panic 那个点去函数跑到 defer 之后的那个点。 3.多个 defer 会形成 defer 栈后定义的 defer 语句会被最先调用。 painc处理demo painc会导致程序直接退出平时开发中尽量不随便使用。 一般场景我的服务想要启动必须依赖某些服务、日志、mysql能联通配置文件没问题那么才能启动的时候直接使用panic 一旦服务启动这时你的某行代码不小心触发panic那么这就是重大事故比如别人请求你直接挂了 但是架不住有些地方被动触发panic这时就引入了recover来捕获panic package mainimport fmt// painc部分后面代码不执行 func test() {defer func() {if err : recover(); err ! nil {println(recover panic:, err.(string))}}()panic(panic错误测试)//panic后的代码不执行//fmt.Println(panic后代码) }func main() {test()fmt.Println(main) }error处理 demo package mainimport (errorsfmt )func A() (int, error) {return 2, errors.New(this is an error)}func main() {if _, err : A(); err ! nil {fmt.Println(err)} }recover捕获panic的demo recover需要延迟调用也就是必须在defer的函数内部否则返回nil package mainimport fmtfunc except() {fmt.Println(except延迟函数调用!)fmt.Println(except延迟函数recover:, recover()) }func recoveryDemo() {//等效于下面的匿名延迟函数defer except()//延迟调用recover在函数内部defer func() {if err : recover(); err ! nil {fmt.Println(有效, err.(string))}}()//defer recover() //无效不是延迟调用nildefer fmt.Println(recover()) //无效空defer func() {func() {fmt.Println(defer inner)fmt.Println(defer inner, recover()) //无效}()}()panic(panic错误测试)//不会执行fmt.Println(End of test!) }func main() {recoveryDemo()fmt.Println(main) }总结需要recover捕获panic时defer延迟函数进行接受并且第一个有效的recover只能捕获最后一个painc(如果多个panic),之后有效的recover也返回nil。 defer的使用 defer延迟调用一般释放资源和连接、关闭文件、释放锁等等。类似于java的finally和c中析构函数不过defer一般跟在函数或方法中。 参考博客【Golang】Go语言defer用法大总结(含return返回机制)_golang defer return-CSDN博客 多个defer满足后进先出 defer跟无参、有参函数、方法 package mainimport fmt //无返回值 func test(a int) {defer fmt.Println(defer1 , a)//方法defer func(v int) {fmt.Println(defer2 , v)}(a)//有参函数defer func() {fmt.Println(defer3 , a)}()//无参函数a 100 }func main() {test(0) }defer满足后进先出其次有参情况下a会先传递进入最后等a100之后执行完了再输出。 可读取函数返回值return返回机制 先return结构写入返回值后defer收尾最后携带返回值退出. 无名返回值有名返回值的区别见下面demo 无名有名返回值defer的demo 函数返回值可以无名、有名这个是方便理解的不全代码有名res的话本质局部变量因此defer后会可能会影响res的返回值。而int这个返回值就直接定了。这个很容易引起bug因此看下面例子 package mainimport fmt// 无名返回值 func UnNamed(n int) int {n 100defer func() {n 100fmt.Println(UnNamed defer1, n)}()return n }// 有名返回值 func Named(n int) (res int) {res n 100defer func() {res 100fmt.Println(UnNamed defer1, res)}()// 返回res局部变量因此受defer中的res的逻辑影响return res }func main() {n : 0fmt.Println(main UnNamed return:, UnNamed(n))fmt.Println(main Named return:, Named(n)) }对于第一无名返回值先执行return保存返回值100之后defer输出200最后返回到main函数为100. 第二有名返回值先执行return知道返回的是res(此时100)之后defer修改输出res200,最终返回到main为200. 同理可以更复杂defer可以传入形参的无名有名函数可以进行分析。 package mainimport fmt// 无名返回值 func UnNamed(n int) int {n 100defer func(n int) { //传入100输出110n 10fmt.Println(UnNamed defer2, n)}(n)defer func() { //200n 100fmt.Println(UnNamed defer1, n)}()return n //100 }// 有名返回值 func Named(n int) (res int) {res n 100 //100defer func(res int) { //传入100并且注意是值拷贝并且入栈,110res 10fmt.Println(UnNamed defer2, res)}(res)defer func() { //入栈res 100fmt.Println(UnNamed defer1, res)}()return res //100-200 }func main() {n : 0fmt.Println(main UnNamed return:, UnNamed(n)) //100fmt.Println()fmt.Println(main Named return:, Named(n)) //200 }因此传入指针等等defer函数有无名返回值均会影响main函数中接收到的最终return的值请注意。 调用os.Exit时defer不会被执行defer与panic进行配合处理异常 nil相关 nil代表某些数据类型的零值 不同类型0值 bool false number 0 string slice、map、channel、pointer、interface{} nil 如果是结构体那么它的零值是内部所有属性的零值的集合 nil 和empty的区别 这里分析了slice、map中的nil和empty的区别。 package mainimport fmttype Student struct {name stringage int }func main() {// nil slice,其实可以创建append对nil slice进行了处理但是map就不行var s1 []Student//s1 append(s1, Student{Bob, 19})fmt.Println(s1)if s1 nil {fmt.Println(s1nil)}// 不是nil slice其实本质上是创建了内部ptr指向一个空间为0的数组var s2 make([]Student, 0)if s2 nil {fmt.Println(s2nil)}// nil mapvar m1 map[int]Studentif m1 nil {fmt.Println(m1nil)}//可以查询,但是无法添加键值对,panic(assignment to entry in nil map)//m1[1] Student{hhh, 123}//if val, ok : m1[1]; ok {// fmt.Println(ok, val)//} else {// fmt.Println(not ok)//}fmt.Println(m1)//不是nil map已经初始化了0个空间的mapvar m2 make(map[int]Student, 0)//可以查询插入数据了m2[1] Student{hhh, 123}if val, ok : m2[1]; ok {fmt.Println(ok, val)} else {fmt.Println(not ok)}fmt.Println(m2)}

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

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

相关文章

外贸网站建设和优化wordpress主题外贸下载

大家好,提到Linux,一些用户会认为这是一个复杂的操作系统,因为所有工作都是通过终端使用命令来完成的。但是当用户开始在Linux上工作时,就会喜欢上这些命令,在Linux上工作一段时间后,用户会开始更喜欢Linux…

如皋网站建设招标wordpress查询次数

文章目录 计算机系统5G云计算第一章 LINUX ansible 自动化运维工具(机器管理工具)一、概述二、ansible 环境安装部署三、ansible 命令行模块1.command 模块2.shell 模块3.cron 模块4.user 模块5.group 模块6.copy 模块7.file 模块8.hostname 模块9.ping …

做视频网站视频文件都存放在哪里5118关键词查询工具

【本节目标】 1.vector的介绍及使用 2.vector深度剖析及模拟实现 1.vector的介绍及使用 1.1 vector的介绍 vertor文档介绍 1. vector是表示可变大小数组的序列容器。2. 就像数组一样,vector也采用连续存储空间来存储元素。也就是意味着可以采用下标对vector的元…

海北wap网站建设公司佛山网站建站建设

目录 准备: 开始: 1.解压 2.环境变量配置 3.生效环境变量配置文件 3.修改配置文件 1.修改zookeeper集群信息 2.修改mysql配置信息 4.启动 5.异常排查 6.页面 创作不易,你的动力是我创作的动力,如果有帮助请关注我&…

程家桥街道网站建设江苏电信网站备案

引言: SpringBoot确实帮助我们减少了很多配置工作,下面说一下程序是如何运行的。目前程序运行的入口就是SpringBoot工程创建时自带的那个类了,带有main方法的那个类,运行这个类就可以启动SpringBoot工程的运行。 @SpringBootApplication public class SpringBootQu…

郑州专业旅游网站建设网站建设需要这些工具和软件

面向对象 Object Oriented 面向对象的学习: 面向对象的语法(简单,记忆就可以搞定)面向对象的思想(稍难,需要一定的理解) 面向过程和面向对象的区别 面向过程开发,以函数作为基本结构…

闸北网站建设公司建设单位企业锁登陆网站

项目管理PMP6.0-五大过程组、十大知识领域、四十九个过程(记忆码:7664363734) 项目经理的影响力范围三者关系图(五大过程组、十大知识领域、四十九个过程)五大过程组十大知识领域十大知识领域之间联系 四十九个过程&am…

网站导航条模板南昌正规网站公司吗

Building Custom Tools for the DW/BI System 市场上有大量的工具帮我们来建立DW/BI系统、把信息交付给业务用户。这些工具的种类也很多,它们包括关系型数据库管理系统、OLAP数据库管理系统、ETL工具、数据挖掘工具、查询工具、报表工具,以及BI门户工具等…

网站建设合同标准版建设网站资质查询

一、安装支持stream的nginx版本: 1、首先,先下载nginx的rpm包,下载地址:http://nginx.org/packages/centos/7/x86_64/RPMS/ 下载 nginx-1.20.1-1.el7.ngx.x86_64.rpm2、执行安装命令: 然后,将下载好的rp…

企业标准型手机网站wordpress授权登录

System.SysUtils.AnsiCompareFileName 根据当前语言环境比较文件名。 在 Windows 下不区分大小写,在 MAC OS 下区分大小写。 在不使用多字节字符集 (MBCS) 的 Windows 区域设置下,AnsiCompareFileName 与 AnsiCompareText 相同。在 MAC OS 和 Linux 下&…

小米4路由器可以做网站嘛个人做的网站不能做淘客

文章目录 一 技术准备1.1 二维码技术(java)1.2 支付宝沙箱环境准备1.3 内网穿透 二 支付宝支付相关知识2.1 各种支付方式2.2 扫码付接入流程2.3 系统交互流程(时序图)2.4 加密逻辑 三 扫码支付实现3.1 添加maven依赖(Easy版)3.2 完…

做网站app公司前景免费的wordpress能用吗

1.数据类型 bool:布尔类型,属于基本类型的整数类型,取值为真和假 true:具有布尔类型的字面量,表示真 false:具有布尔类型的字面量,表示假 char:表示字符型,定义了字节的大小,char表示单字节字符 wchar_t:表…

网站加在线qq免费素材网png

Visio给立方体的每条边填充不同的颜色,超好用的visio小技巧~ 如何实现立方体的填充颜色从左边的纯色到右边的多色呢?一起学起来吧~ 在visio中绘制一个普通的立方体; 用一个大的矩形盖住刚才绘制的立方体; 全选之后找到 开发工具-&…

成都建设网站公司wordpress找回密码链接

【前端学习】—函数防抖&#xff08;十&#xff09; 一、什么是函数防抖 函数防抖&#xff1a;事件被触发n秒后再执行回调&#xff0c;如果在这n秒内又被触发&#xff0c;则重新计时。 二、代码实现 <script>const searchElement document.getElementById("searc…

网站后台英文重庆市建设工程施工安全管理网站

概述 ● 一个int成员变量 state 表示同步状态 ● 通过内置的FIFO队列来完成资源获取线程的排队工作 属性 AbstractQueuedSynchronizer属性 /*** 同步队列的头节点 */private transient volatile Node head;/*** 同步队列尾节点&#xff0c;enq 加入*/private transient …

网站建设作业指导书公司怎么建立自己网站

摘要安全多方计算几何(SMCG)是安全多方计算的一个分支。该协议是为SMCG中安全的多方凸包计算而设计的。首先&#xff0c;提出了一种基于量子同态加密的安全双方值比较协议。由于量子同态加密的性质&#xff0c;该协议可以很好地保护量子电路执行过程中数据的安全性和各方之间的…

网站用户注册增加办法濮阳建设公司网站

java中string与date(日期)格式之间的转换 经常遇到string和date之间的转换&#xff0c;把相关的内容总结在这里吧&#xff1a; 1.string格式转化为Date对象&#xff1a; //把string转化为dateDateFormat fmt new SimpleDateFormat("yyyy-MM-dd"); Date date fmt.par…

淘宝不允许 网站建设已经有域名如何做网站

jvm ide有没有想过为什么Eclipse / Netbeans会一直暂停一段时间&#xff1f; 特别是当您想向亲爱的同事展示代码中的内容时&#xff1f; 感到尴尬和尴尬&#xff0c;不是吗&#xff1f; 我发现大多数情况下IDE会由于执行垃圾收集器而暂停。 JVM设计中的微妙元素很少起作用&…

建设自己的二手房中介网站网站的内容管理

类加载器负责把类加载到java虚拟机即JVM中&#xff0c;指定类的名称&#xff0c;类加载器就会定位这个类的定义&#xff0c;每一个java类必须由类加载器加载。 当启动JVM的时候&#xff0c;我们可以使用三个类加载器&#xff1a;引导类加载器、扩展类加载器、应用程序类加载器 …

河南省建设工程质量协会网站wordpress 产品展示插件

2023年7月7日-9日&#xff0c;华为开发者大会2023&#xff08;Cloud&#xff09;在东莞松山湖隆重举行。期间&#xff0c;华为云主办了以“AI‘邂逅’一站式软件开发&#xff0c;CodeArts以10倍效能“绘”企业应用远景”为主题的分论坛。 华为云PaaS服务产品部副部长汪维敏携一…