当前位置: 首页 > news >正文

Go学习-Day4

文章目录

  • Go学习-Day4
    • 函数
      • 值传递,引用传递
      • 常用的函数
    • 异常处理
    • 数组
    • Slice切片

Go学习-Day4

  • 个人博客:CSDN博客

函数

值传递,引用传递

  • 值传递直接拷贝值,一般是基本数据类型,数组,结构体也是
  • 引用传递传递地址 ,效率高,指针,slice切片,map,管道,interface等

常用的函数

  • len(string str)//求字符串长度,自带的不用包,中文一个字三字节
    
  • 转成[]rune来处理

  • []byte转string

  • str = string([]byte{...})
    
  • 查找子串是否存在

  • 若干字符函数

  • strings.Contains("aaa", "aaa") //bool
    strings.Index("aaa", "aaa")//返回下标
    strings.LastIndex("aaa", "aaa")//返回最后一个下标,没有就返回-1
    strings.Replace(str, str1, str2, n)//把1中str1替换成str2,n是替换个数,-1表示全部替换
    strings.Split(str, "某字符")//分割字符串
    strings.TrimSpace(str)//裁剪空格,去掉前导和后导空格
    strings.Trim(str, "字符集")//去掉指定字符
    strings.TrimLeft()//同上,去掉左侧,并且还有TrimRight
    strings.HasPrefix(str, "后缀")//前缀匹配
    strings.HasSuffix()//同上,但是后缀
    
  • 若干时间函数

  • now := time.Now()//返回时间类型,当前时间
    //2023-08-23 16:37:07.5402748 +0800 CST m=+0.001148901 大概是这样
    //时间类型是结构体,可以使用.运算符来获取其他时间信息,now.Year()
    //月份可以直接转int
    time.Sleep(time.Millisecond * 100)//只能用乘法,不能有浮点数,利用时间单位常量
    time.Unix()//获取unix秒时间戳
    time.UnixNano()//unix纳秒时间戳
    
  • 内置函数built-in

  • len()//统计字符串长度,数组大小
    new(Type) *Type //参数为类型,返回一块对应大小的清空的内存块的指针
    

异常处理

  • Go中没有try catch

  • Go利用defer panic recover来处理异常

  • 抛出一个panic的异常,在defer中通过recover捕获异常

  • package mainimport "fmt"func test() {defer func() {err := recover() //捕获异常if err != nil {fmt.Println(err)}}()num1 := 10num2 := 0res := num1 / num2fmt.Println(res)
    }
    func main() {test()fmt.Println("ok")
    }
  • 通过捕获异常,可以使得程序不崩溃停止!main函数的其他部分照常运行

  • 自定义错误

  • func myError(x int) (err error) {if x == 0 {return nil} else {return errors.New("错误")}
    }func test() {err := myError(1)if err != nil {panic(err)}
    }func main() {test()
    }
    
  • panic会终止程序

  • 捕获自定义错误

  • func myError(x int) (err error) {if x == 0 {return nil} else {return errors.New("错误")}
    }func test() {defer func() {err := recover() //捕获异常if err != nil {fmt.Println(err)}}()err := myError(1)if err != nil {panic(err)}
    }func main() {test()fmt.Println("ok")
    }
    

数组

  • 定义

  • func main() {var arr [10]intarr[0] = 1fmt.Println(arr)}
    
  • 数组名地址&arr

  • 初始化

  • var arr [3]int = [3]int{1, 2, 3}var arr = [3]int{1, 2, 3}var arr = [...]int{1, 2, 3}var arr = [...]int{1: 800, 0: 900, 2: 999}//指定下标var arr := [...]int{1, 2, 3} //自动推导
    
  • 遍历for-range 同string 不赘述

  • 数组中的元素可以是任何合法的类型,但是不能混用

  • Go中数组是值类型,会进行拷贝,要想修改原数组,需要使用指针,写法类似C语言的行指针

Slice切片

  • 切片是引用类型,传递地址

  • 切片和数组类似,但是长度是可以变化的!

  • 声明

  • var a []int
    
  • func main() {var arr [5]int = [...]int{1, 2, 3, 4, 5}slice := arr[1:3] //从下标1与下标3,左闭右开的区间fmt.Println(slice)
    }
    
  • 通过make声明

  • func main() {slice := make([]int, 2, 4)fmt.Println(slice)
    }
    
  • make在底层维护一个数组,这个数组对外不可见

  • 直接声明

  • var slive []string = []string 
    
  • 遍历和数组类似,不再赘述

  • 简写

  • var slice = arr[:end] // var slice = arr[0:end]前缀,不含end
    var slice = arr[start:]//var slice = arr[start:]后缀
    var slice = arr[:]//var slice = arr[0:len(arr)]全长
    
  • 切片可以继续切片

  • 切片可以追加,可以追加多个数,可以追加多个切片,利用append将追加后的切片赋值给原来的切片

  • slice1 = append(slice1, 1, 2, 3)//追加数
    slice1 = append(slice1, slice1...)//要三个点
    
  • Go底层会创建一个新的数组,然后切片这个新的数组,这些过程均不可见

  • string可以进行切片处理

  • str := "sssssss"
    slice := str[2:]//从下标2开始切后缀
    
  • string底层也指向一个byte数组,我们用切片来拷贝这个只读的byte数组再进行操作

  • 通过切片能够改变字符串

  • arr := byte[](str)
    arr[0] = 'a'
    str = string(arr)
    //但是不支持中文
    arr := rune[](str)
    arr[0] = '好'
    str = string(arr)
    //弄中文
    func main() {str := "?????"arr := []rune(str)arr[0] = '好'fmt.Println(string(arr))
    }
    

相关文章:

Go学习-Day4

文章目录 Go学习-Day4函数值传递,引用传递常用的函数 异常处理数组Slice切片 Go学习-Day4 个人博客:CSDN博客 函数 值传递,引用传递 值传递直接拷贝值,一般是基本数据类型,数组,结构体也是引用传递传递…...

将el-dialog封装成函数调用

1、 使用Vue实例化方法 // MyDialog.js import Vue from vue export const openFormDialog function ({ props {}, events {} }) {const vm new Vue({data () {return {form: {}}},render () {return (<el-dialogvisible{true}{...{ props }}{...{ on: events }}onClos…...

Windows10批处理命令行设置环境变量笔记,无需重新安装python与chrome

近期&#xff0c;工作中经常安装、部署python生产、开发环境&#xff0c;比较麻烦&#xff0c;也没有心情去优化。突然&#xff0c;我的电脑崩溃了&#xff0c;在重新安装电脑的过程中&#xff0c;保留了原来的安装软件&#xff08;有的没有放在系统盘中&#xff09;&#xff0…...

统计学补充概念07-比较树

概念 在层次聚类中&#xff0c;聚类结果可以以树状结构表示&#xff0c;通常称为树状图&#xff08;Dendrogram&#xff09;。树状图展示了数据点如何被合并或分裂以形成聚类的层次结构。通过观察树状图&#xff0c;可以更直观地理解数据点之间的相似性和关系。 在比较树状图…...

设计原则 --《设计模式之美》总结篇

本文是阅读《设计模式之美》的总结和心得&#xff0c;跳过了书中对面试和工作用处不大或不多的知识点&#xff0c;总结总共分为三章&#xff0c;分别是面对对象编程范式、设计原则和设计模式。 设计模式是代码设计时的一些经验总结。相比于设计模式&#xff0c;设计原则更抽象。…...

Day16-蜗牛影城后端开发

蜗牛影城后端开发 一 多表关联查询 电影集合movie的type(类别)字段关联到电影类别movieType表的_id(主键) 二 蜗牛影城后端开发 1 数据的导入导出 2 用户模块 UserModel.js //导入mongoose,并解构出Schema(类)和model(对象) const {Schema,model} =...

axios / fetch 实现 stream 流式请求

axios 是一个支持node端和浏览器端的易用、简洁且高效的http库。本文主要介绍 axios 如何实现 stream 流式请求&#xff0c;注意这里需要区分 node 环境和浏览器环境。 一、node端 代码演示&#xff1a; const axios require(axios);axios({method: get,url: http://tiven.c…...

Pytorch学习:torchvison.transforms常用包(ToTensor、Resize、Compose和RandomCrop)

torchvision.transforms常用包 1. torchvision.transforms.ToTensor2. torchvision.transforms.Resize3. torchvision.transforms.Compose4. torchvision.transforms.Normalize5. torchvision.transforms.RandomCrop 1. torchvision.transforms.ToTensor 将PIL Image或ndarray…...

算法通关村十二关 | 字符串转换

1. 转换小写字母 LeetCode709&#xff1a;给你一个字符串s&#xff0c;将该字符串中的大写字母转换成相同的小写字母&#xff0c;返回新的字符串。 每个字母都是有确定的ASCII的&#xff0c;可以根据码表操作子字符串&#xff0c;常见的ASCII范围是&#xff1a; a-z: 97-122, …...

前端进阶Html+css09----BFC模型

1.什么是BFC模型 全称是&#xff1a;Block formatting context&#xff08;块级格式化上下文&#xff09;&#xff0c;是一个独立的布局环境&#xff0c;不受外界的影响。 2.FC,BFC,IFC 元素在标准流里都属于一个FC&#xff08;Formatting Context&#xff09;。 块级元素的布…...

重排链表(C语言)

题目&#xff1a; 示例&#xff1a; 思路&#xff1a; 这题我们将使用栈解决这个问题&#xff0c;利用栈先进后出的特点&#xff0c;从链表的中间位置进行入栈&#xff0c;寻找链表的中间位置参考&#xff1a;删除链表的中间节点&#xff0c;之后从头开始进行连接。 本题使用…...

el-table动态合并单元格

el-table使用这个方法合并单元格&#xff0c;:span-method“hbcell” <el-table size"small" :data"table.data" border empty-text"暂无数据" :cell-style"cellStyle" :header-cell-style"tableHeaderColor":span-meth…...

html元素

文章目录 html基本结构属性语义化为什么要语义化 示例head中属性样式一些概念块级元素与行级元素空白折叠 html编程没有css的html显示逻辑 html基本结构 html基本单元就是元素&#xff0c;每个元素有标记和属性&#xff0c;如&#xff1a; <a href"...">www&…...

push github

一、生成密钥 打开git bash执行下面指令&#xff0c;Enter下一步Enter下一步..生成ssh key 密钥&#xff1b; ssh-keygen -t rsa 二、 复制公共密钥到git hub 登录github&#xff0c;在选项setting >> SSH and GPG key >> add new ssh添加刚才的公钥地址即可 验证…...

iFluor 594 Styramide是一种荧光染料,常用于生物分子标记和成像

试剂 | 基础知识概述&#xff08;部分&#xff09;: 中文名称&#xff1a;Alexa Fluor 594酪Styramide 分子量&#xff1a;1341.71 胺的优异替代品 100 Slides 英文名称&#xff1a;iFluor 594 Ex (nm)&#xff1a;588 Em (nm)&#xff1a;604 规格标准&#xff1a;1g&am…...

动态规划入门之01背包变形嗑药

P1802 5 倍经验日 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 嗑药固然可耻&#xff0c;但是能让你快速变强 --鲁迅 手动滑稽&#xff0c;话归正题 动态规划之背包入门01背包模板_爱莉我老婆的博客-CSDN博客 这是01背包的模板&#xff0c;没看的可以去看看。 我们把…...

数据结构——栈和队列OJ题

栈和队列小提升&#xff01; 前言一、用队列实现栈队列接口实现&#xff08;1&#xff09;栈的接口定义&#xff08;2&#xff09;栈的初始化&#xff08;3&#xff09;入栈函数的定义&#xff08;4&#xff09;出栈函数的定义&#xff08;5&#xff09;查找栈顶元素&#xff0…...

同态排序算法

参考文献&#xff1a; [Batcher68] Batcher K E. Sorting networks and their applications[C]//Proceedings of the April 30–May 2, 1968, spring joint computer conference. 1968: 307-314. [SV11] Smart, N.P., Vercauteren, F.: Fully homomorphic SIMD operations. IA…...

“深入探索JVM内部机制:解析Java虚拟机的工作原理“

标题&#xff1a;深入探索JVM内部机制&#xff1a;解析Java虚拟机的工作原理 摘要&#xff1a;本文将介绍Java虚拟机&#xff08;JVM&#xff09;的工作原理&#xff0c;包括类加载、内存管理、垃圾回收和字节码执行等方面。通过深入理解JVM的内部机制&#xff0c;开发人员可以…...

为应用程序接入阿里云CDN优化网站访问速度

文章目录 1.KodCloud云盘系统接入CDN之前的效果2.配置KodCloud云盘接入CDN加速器2.1.添加CDN域名2.2.配置域名信息2.3.CDN推荐配置设置2.4.CDN加速器配置完成 3.配置云解析DNS增加CDN域名的解析4.为CDN加速器配置HTTPS5.验证网站是否接入CDN6.访问应用程序观察请求速度7.观察CD…...

索引设计规范

索引是帮助数据库高效获取数据的数据结构。索引是加速查询的常用技术手段。在设计索引时&#xff0c;要遵循索引设计规范&#xff0c;避免不必要的踩坑。 【推荐】索引存储结构推荐BTREE InnoDB和MyISAM存储引擎表&#xff0c;索引类型必须为BTRER&#xff0c;MEMORY表可以根…...

Appium 2安装与使用java对Android进行自动化测试

文章目录 1、Appium 2.1安装1.1、系统要求1.2、安装Appium2.1服务1.3、安装UiAutomator2驱动1.4、安装Android SDK platform tools1.5、下载OpenJDK 2、Android自动代码例子2.1、安装Android自动化测试元素定位工具Appium Inspector2.2、编写android app自动化测试代码和使用ex…...

小程序运营方式有哪些?如何构建小程序运营框架?

​如今&#xff0c;每个企业基本都做过至少一个小程序&#xff0c;但由于小程序本身不具备流量、也很少有自然流量&#xff0c;因此并不是每个企业都懂如何运营小程序。想了解小程序运营方式方法有哪些&#xff1f; 在正式运营小程序前&#xff0c;了解小程序的功能与企业实际经…...

【golang】for语句和switch语句

使用携带range子句的for语句时需要注意哪些细节&#xff1f; numbers1 : []int{1, 2, 3, 4, 5, 6} for i : range numbers1 {if i 3 {numbers1[i] | i} } fmt.Println(numbers1)这段代码执行后会打印出什么内容&#xff1f; 答案&#xff1a;[1 2 3 7 5 6] 当for语句被执行…...

三、数据库索引

1、索引介绍 索引是一种用于快速查询和检索数据的数据结构&#xff0c;其本质可以看成是一种排序好的数据结构。 常见的索引结构有&#xff1a;B数&#xff0c;B树&#xff0c;Hash和红黑树等。在MySQL中&#xff0c;无论是 InnoDB还是MyISAM&#xff0c;都使用了B树作为索引…...

长时间带什么耳机最舒服,分享长时间佩戴舒服的耳机推荐

时代在进步&#xff0c;科技在不断革新。近年来&#xff0c;一种崭新的耳机——骨传导耳机&#xff0c;如火如荼地进驻耳机市场&#xff0c;引起一阵热潮。不论是平日里的工作出勤还是运动时的挥洒汗水&#xff0c;相比传统耳机&#xff0c;骨传导耳机无疑更加贴合现代生活的需…...

Yolov8小目标检测(1)

💡💡💡本文目标:通过原始基于yolov8的红外弱小目标检测,训练得到初版模型,进行问题点分析; 💡💡💡Yolo小目标检测,独家首发创新(原创),适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,带你轻松实现小目标检测涨点 💡💡…...

GPS定位漂移问题分析

有很多种因素会影响到GPS的准确率&#xff0c;以下是一个GPS误差引入简表&#xff1a; l 卫星时钟误差&#xff1a;0-1.5米 l 卫星轨道误差&#xff1a;1-5米 l 电离层引入的误差&#xff1a;0-30米 l 大气层引入的误差&#xff1a;0-30米 l 接收机…...

前端简介(HTML+CSS+JS)

学习Django过程中遇到一些前端相关的内容&#xff0c;于是整理了一下相关概念。 前端开发是创建WEB页面或APP等前端界面呈现给用户的过程。 如果只是想要入门前端&#xff0c;只要学习网页三剑客(HTML、CSS、JavaScript)即可。 如果把网页比喻成一个房子&#xff0c;HTML就是…...

List与String数组互转

一.List 转为 String 数组 1.使用toArray方法 public static void main(String[] args) {List<String> list Lists.newArrayList("1","2","3");// Java6以前版本String[] str1 list.toArray(new String[list.size()]);// Java6以后版本…...

雄安智能网站建设方案/百度网页版主页网址

目录1. 按位与运算符&#xff08;&&#xff09;2. 按位或运算符&#xff08;|&#xff09;3. 异或运算符&#xff08;^&#xff09;4. 取反运算符 (~)5. 左移运算符&#xff08;<<&#xff09;6. 右移运算符&#xff08;>>&#xff09;「补充」 原码、补码、反…...

网站开发php制作/百度首页百度

轮询顾名思义&#xff0c;CPU不停的询问&#xff0c;CPU很忙。 中断和轮询不同&#xff0c;是硬件上的&#xff0c;就像一个开关被按下了&#xff0c;没有什么东西在不停的询问开关有没有被按下&#xff0c;开关只是被按下了&#xff0c;就通电了&#xff0c;通电了就会发生一些…...

建设音乐网站功能定位/网络营销知识

转载于:https://www.cnblogs.com/classmethond/p/10086938.html...

10个无版权限制的大图特供网站/seo排名哪家正规

看到书中的return *this比较疑惑&#xff0c;查询过后总结如下。 class temp {...; } 假如定义temp *get(){return this;}&#xff0c;那么返回的this就是地址&#xff0c;即返回一个指向对象的指针 假如定义temp get(){return *this;} 那么返回的就是对象的克隆&#xff0c…...

b2c网站源码/免费刷赞网站推广qq免费

展开全部在数据库中储e69da5e887aa62616964757a686964616f31333365646333存选择题&#xff0c;设置3张表比较好。以下是设置方法&#xff1a;方法一&#xff1a;如果能确定选项最多就是6个可以考虑建一个表,字段定义为&#xff1a;题目编号(PK)、题干、选项1、选项2……选项6。…...

wordpress怎么安装/成都企业seo

作者&#xff1a;谭俊青MySQL实验室(转载请保留该行及作者信息和原文链接&#xff0c;谢谢&#xff01;) NoSQL最近很火&#xff0c;因为它在K/V存储的优异性能表现&#xff0c;催生出很多产品&#xff0c;比如&#xff1a;Memcached、MongoDB、Redis、TT等等. 然而他们或多或少…...