Go学习第二天

news2024/9/22 11:30:54

Defer语句调用顺序

package main

import "fmt"

func main() {
	defer fmt.Println("main end1  先进后出")
	defer fmt.Println("main end2  后进先出")

	fmt.Println("main hello go 1")
	fmt.Println("main hello go 2")
}

重点:
Defer执行顺序,类似于压栈出栈的方式,先进后出的形式
可用于关闭工作流之类的


package main

import "fmt"

func deferFunc() int {
	fmt.Println("defer func called ...")
	return 0
}

func returnFunc() int {
	fmt.Println("return func called ...")
	return 0
}

func returnAndDefer() int{
	defer deferFunc();
	return returnFunc();
}
func main() {
	//defer fmt.Println("main end1  先进后出")
	//defer fmt.Println("main end2  后进先出")
	//
	//fmt.Println("main hello go 1")
	//fmt.Println("main hello go 2")

	returnAndDefer();
}

Stack栈

如果defer和return在一个方法中同时存在,那么return之后的语句先执行,defer后的语句后执行。

Golang中的数组与动态数组的区别

slice 切片,动态数组的类型

package main

import "fmt"

func printArray(myArray1 [10]int)  {
	// 值拷贝
	for index, value := range myArray1 {
		fmt.Println("index = ", index, "value = ", value)
	}
}
func main() {
	// 固定长度的数组
	var myArray1 [10]int

	// 固定长度的数组,带初始化数据
	myArray2 := [10]int{1, 2, 3, 4, 5, 6, 7, 8}

	for i := 0; i < len(myArray1); i++ {
		fmt.Println(myArray1[i])
	}

	for index, value := range myArray2 {
		fmt.Println("index = ", index, "value = ", value)
	}

	// 查看数组的数据类型
	fmt.Printf("myArray1 type is %T\n",myArray1)
	fmt.Printf("myArray2 type is %T\n",myArray2)

	printArray(myArray2)
}

请添加图片描述

package main

import (
	"fmt"
)

func printArray2(myArray []int) {
	// 引用传递
	// _ 表示匿名的变量
	for _, value := range myArray {
		fmt.Println("value = ", value)
	}
	// 重新赋值
	myArray[0] = 100
	myArray[1] = 199
}

func main() {
	myArray := []int{1, 2, 3, 4, 5} // 动态数组,切片slice
	fmt.Printf("myArray type is %T \n", myArray)

	printArray2(myArray)

	fmt.Println("======================")

	for index, value := range myArray {
		fmt.Println("index = ", index, "value = ", value)
	}
}

请添加图片描述

Go中slice切片的4种声明方式

方式一:声明一个变量,默认值是0
var a int
fmt.Println("a = ", a)
fmt.Printf("type of a = %T \n", a)

方式二:声明一个变量,初始化一个值
var b int = 100
fmt.Println("b = ", b)
fmt.Printf("type of b= %T \n", b)

方式三:再初始化的时候,可以省去数据类型,通过值自动匹配当前的变量的数据类型
var c = 100
fmt.Println("c = ", c)
fmt.Printf("type of c= %T \n", c)

方式四: 直接变量后面:=,省去var关键字,直接自动匹配

d :=100
fmt.Println("d = ", d)
fmt.Printf("type of d= %T \n”, d)



声明多个变量:
方式一:多个值同属一种数据类型
var xx, yy int = 100, 200
fmt.Println("xx = ", xx)
fmt.Println("yy = ", yy)

方式二:多个值不同的数据类型,就不声明具体类型,自动反向推导出数据类型
var kk, ll = 100, "hello"
fmt.Println("kk = ", kk)
fmt.Println("ll = ", ll)

多行的多变量声明:不写具体类型,自动反向推导出数据类型
var(
	vv int = 100
	uu bool = true
)
fmt.Println("vv = ", vv, ", uu = ", uu)

方式一、方式二、方式三可以用于全局变量,方式四则不行,只能在函数体中声明

slice切片追加与截取

cap 如果在make的时候不指定默认值,则cap值就是len值

当apend的时候,如果长度增加后超过初始容量,则会动态增加cap倍数的容量,比如,cap初始值为5,那么就会动态增加5,总长则为10;

请添加图片描述

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

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

相关文章

Android性能优化—LeakCanary内存泄漏检测框架分析。

一、什么叫内存泄漏、内存溢出&#xff1f; 内存溢出(out of memory)&#xff1a;是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;出现out of memory&#xff1b;比如申请了一个10M的Bitmap&#xff0c;但系统分配给APP的连续内存不足10M&#xff0c…

Cpp7 — 继承和多态

继承 -------- 面向对象的三大特性之一 面向对象的三大特性&#xff1a;封装、继承、多态 封装&#xff1a;把数据和方法都封装在一起&#xff0c;想给你访问的变成共有&#xff0c;不想给访问的&#xff0c;写成私有。 继承&#xff1a;继承是类设计层次的复用 多态&#…

物联网远程智能控制设备——开关量/正反转百分比控制

如今生产生活的便利性极大程度上得益于控制技术的发展&#xff0c;它改变了传统的工作模式&#xff0c;并将人们从【纯劳力】中解放出来。如今&#xff0c;随着科学技术的进步&#xff0c;控制器的种类及应用领域也越来越多。 物联网远程智能控制设备就是一种新型的、能够用于…

VSCode自定义闪烁光标

打开VSCode 组合键ctrlshiftp搜索"settings.json",打开User Settings 加上这一句 "editor.cursorStyle": "block","workbench.colorCustomizations": {"editorCursor.foreground": "#5c8fb1","terminalCurs…

拓数派入选中国信通院 “铸基计划”「高质量数字化转型产品及服务全景图」

7 月 27 日&#xff0c;由中国信息通信研究院&#xff08;以下简称 “中国信通院”&#xff09;主办的 “2023 数字生态发展大会” 暨中国信通院 “铸基计划” 年中会议在京召开&#xff0c;本次大会深度展示了中国信通院在数字化领域的工作成果&#xff0c;并正式发布了《高质…

HCIP BGP概念、工作原理、特点总结

BGP概念 BGP---边界网关路由协议&#xff0c;无类别的路径矢量EBP协议 BGP类别的路由协议&#xff0c;用于AS与AS间进行路由条目共享&#xff1b; AS指的是在同一个组织管理下&#xff0c;使用统一选路策略的设备集合&#xff0c;不同AS号通过AS号来区分&#xff0c;AS号存在…

小程序如何上传商品图片

了解如何在小程序商城中上传商品图片是非常重要的&#xff0c;因为商品图片的质量和展示效果直接影响到用户对商品的购买决策。下面&#xff0c;我将介绍怎么在小程序上传产品图片的方法和注意事项。 1. 图片准备&#xff1a;在上传商品图片之前&#xff0c;首先要准备好商品图…

Android手机使用无线调试进行adb连接

平时进行真机调试apk的时候&#xff0c;总是要插着数据线&#xff0c;比较麻烦&#xff0c;而使用无线调试就可以方便的进行连接&#xff0c;步骤如下&#xff1a; 1、进入设置找到开发者选项 2、打开开发者选项中的无线调试 3、使用配对码进行配对&#xff0c;输入命令&…

IDEA中修改代码中注释的字体颜色

IDEA中修改代码中注释的字体颜色 一、修改文档注释的字体颜色 选择File--Settings--Color Scheme--Language Defaults&#xff0c;可以修改单行注释的字体颜色&#xff0c;多行注释的字体颜色以及文档注释的颜色&#xff0c;我一般习惯将文档注释和多行注释设置成绿色 008017…

运用大数据软件提高竞彩足球胜平负分析的准确率

竞彩足球是一种以足球比赛结果为基础的体育游戏&#xff0c;它吸引了众多热爱足球的球迷和彩票爱好者的参与。然而&#xff0c;要在竞彩足球中取得最佳的胜平负预测结果并非易事。幸运的是&#xff0c;随着大数据技术的不断发展和应用&#xff0c;我们可以利用大数据软件来提高…

这次,常温超导能否变为现实?

关注科研和技术的朋友近几天应当都听到韩国研发常温超导材料的消息了&#xff0c;作为攻城狮的我自然也是非常感兴趣&#xff0c;经过一番思想斗争还是放下了手上的单片机&#xff0c;想要一看这个常温超导的究竟&#xff0c;毕竟印象之中之前已经搞过好几次乌龙了。常温超导要…

overpass-turbo下载铁路线

overpass turbo /* This has been generated by the overpass-turbo wizard. The original search was: “road” */ [out:json]; rel(198494); out body; >; out skel qt; 上面的198498代表在osm中铁路线的id&#xff0c;这个id获取流程是从osm网站查询出来的 我也没啥好…

MPAndroidCahrt_linechart折线图实现读取本地文件生成曲线

目录 标题(Description)设置图例(Legend)设置(部分和标题一样的没写)X轴(XAxis)设置(上面有的属性不再写了)数据源(LineData)设置MainActivity 注释部分可以删掉,看需不需要效果如下,目前实现基本的读取数据生成曲线,可以正常运行 还有很多bug,比如生成一个数据在生成另…

(二)创建streamlit的第一个应用

1 前言 &#x1f4e3; 重要通知&#xff01;在我之前的博客中&#xff0c;曾经介绍过Streamlit的安装方法和初步应用。如果你还没有参阅过&#xff0c;请先阅读这篇文章&#xff0c;它为我们接下来的探索铺垫了基础。&#x1f50d;&#x1f60a; (一) 初识Streamlit——安装以…

Nodejs 第二章(安装)

安装nodejs 访问官网 en https://nodejs.org/en cn http://www.nodejs.com.cn/ LTS 长期支持版 Current 尝鲜版 选择自己的操作系统 windows Mac Linux windows需要区分64位和32位 Mac需要区分64位还是ARM芯片 Linux同上。 其中msi 和 pkg 可以直接安装较为简单 Mac Pkg wi…

小型双轮差速底盘寻迹功能的实现

1. 功能说明 寻迹机器人是一种能够跟踪特定物体或线路的机器人。它们通常具有以下功能和特点&#xff1a; ① 传感器&#xff1a;寻迹机器人配备了用于感知环境的传感器&#xff0c;如摄像头、灰度传感器等。这些传感器可以探测地面上的标记、颜色、纹理或其他特定特征&#xf…

Vue3和TypeScript项目-移动端兼容

1 全局安装typescript 2 检测安装成功 3 写的是ts代码&#xff0c;但是最后一定要变成js代码&#xff0c;才能在浏览器使用 这样就会多一个js文件 3 ts语法 数组语法 对象语法 安装vue3项目 成功后进入app。安装依赖。因为我们用的是脚手架&#xff0c;要引入东西的时候不需要…

网格简化(QEM)学习笔记

文章目录 网格简化(QEM)1 概述与原理1.1 网格简化的应用1.2 常见的简化操作1.3 二次误差度量 2 算法流程2.1 逐步分析 3 Python代码实现3.1 测试结果 4 总结参考 网格简化(QEM) 1 概述与原理 网格简化&#xff0c;通过减少复杂网格数据的顶点、边和面的数量简化模型的表达&am…

MIT 6.S081 Lab Ten -- mmap

MIT 6.S081 Lab Ten -- mmap 引言mmap(hard)代码解析 引言 本文为 MIT 6.S081 2020 操作系统 实验十解析。 MIT 6.S081课程前置基础参考: 基于RISC-V搭建操作系统系列 mmap(hard) map和munmap系统调用允许UNIX程序对其地址空间进行详细控制。它们可用于在进程之间共享内存&a…

SOLIDWORKS Flow Simulation可以便捷的进行降压分析

导读&#xff1a;现如今压降等应用的工程分析一直是由分析部门的专家执行&#xff0c;这些部门独立于主流设计和开发部门&#xff0c;或者仅为一些重要产品制造昂贵的物理原型。要测试或验证其设计&#xff0c;机械工程师必须依赖于创建物理原型并在工作台或测试台上对其进行测…