Go学习第三天

map的三种声明定义方式

声明map后,一定要make开辟空间,否则会报越界且不能使用

package main

import "fmt"

func main() {
	// 第一种声明方式
	// 声明myMap1是一种map类型 key是string  value是string
	var myMap1 map[string]string

	// 判断一下map在未开辟空间之前是否为空
	if myMap1 == nil {
		fmt.Println("myMap1是一个空map")
	}

	// 通过make关键字来给map开辟空间
	myMap1 = make(map[string]string, 10)

	myMap1["one"] = "java";
	myMap1["two"] = "c++";
	myMap1["three"] = "go";
	fmt.Println(myMap1)

	// 第二种声明方式-常用方式
	myMap2 := make(map[int]string)
	myMap2[1] = "java"
	myMap2[2] = "go"
	myMap2[3] = "py"
	fmt.Println(myMap2)

	// 第三种声明方式
	myMap3 := map[string]string{
		"one":"php",
		"two":"c++",
		"three":"java",
	}
	fmt.Println(myMap3)
}

请添加图片描述

map的使用方式

package main

import "fmt"

// 打印map集合
func printMap(cityMap map[string]string) {
	for key, value := range cityMap {
		fmt.Print("key:", key)
		fmt.Println("  value:", value)
	}
}

// 更改map指定key的值
func changeMapValue(cityMap map[string]string) {
	cityMap["Japan"] = "Tokyoooooo"
}

// 增加map
func addMapValue(cityMap map[string]string, key string, vale string) {
	if len(key) > 0 && len(vale) > 0 {
		cityMap[key] = vale
	}
}

// 拷贝一个map
func copyMap(cityMap map[string]string) (map[string]string) {
	newMap := make(map[string]string)
	for key, value := range cityMap {
		newMap[key] = value
	}
	return newMap
}

func main() {
	// 定义一个map,开辟空间
	cityMap := make(map[string]string)
	// 给map添加数据
	cityMap["China"] = "BeiJing"
	cityMap["Japan"] = "Tokyo"
	cityMap["USA"] = "NewYork"
	printMap(cityMap)
	fmt.Println("==========init===========")
	// 删除
	delete(cityMap, "USA")
	printMap(cityMap)
	fmt.Println("==========delete===========")
	// 修改
	changeMapValue(cityMap)
	printMap(cityMap)
	fmt.Println("==========update===========")
	// 添加
	addMapValue(cityMap, "张三", "zhangsan")
	printMap(cityMap)
	fmt.Println("==========add===========")
	// 拷贝一个map
	returnCopyMap := copyMap(cityMap)
	printMap(returnCopyMap)
	fmt.Println("=========copy============")
}

struct基本定义与使用

package main

import "fmt"

// 声明一种新的数据类型,是int的一个别名
type myint int

// 定义一个结构体
type Book struct {
	title string
	auth string
	price int
}

// 传递一个book的副本,更改价格,打印不会生效,因为传递的是副本
func changeBook(book Book) {
	// 传递副本
	book.price = 55
}

// 传递一个book的指针,更改价格,打印会生效,因为传递的是地址
func changeBook2(book *Book)  {
	// 传递指针
	book.price = 55
}

func main() {
	/*
	var a myint = 10
	fmt.Println("a = ", a)
	fmt.Printf("type of a = %T \n", a)
	 */

	var book Book
	book.title = "GO入门到放弃"
	book.auth = "自学"
	book.price = 100

	fmt.Printf("%v\n", book)
	fmt.Println("==========init===========")

	changeBook(book)
	fmt.Printf("%v\n", book)
	fmt.Println("==========副本update===========")

	changeBook2(&book)
	fmt.Printf("%v\n", book)
	fmt.Println("==========指针update2===========")
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小研究 - 微服务系统服务依赖发现技术综述(二)

微服务架构得到了广泛的部署与应用, 提升了软件系统开发的效率, 降低了系统更新与维护的成本, 提高了系统的可扩展性. 但微服务变更频繁、异构融合等特点使得微服务故障频发、其故障传播快且影响大, 同时微服务间复杂的调用依赖关系或逻辑依赖关系又使得其故障难以被及时、准确…

木马病毒怎么回事?带你深度分析了解木马病毒!

一、病毒简介 SHA256:3110f00c1c48bbba24931042657a21c55e9a07d2ef315c2eae0a422234623194 MD5:ae986dd436082fb9a7fec397c8b6e717 SHA1:31a0168eb814b0d0753f88f6a766c04512b6ef03 二、行为分析 老套路,火绒剑监控: 这边可以看见创建了一个exe&#x…

性能压力测试的重要性与实施方法

性能压力测试是在软件开发过程中评估系统在不同负载条件下的表现和稳定性的关键步骤。这种测试是为了确定系统在正常和峰值负载下的性能表现,以验证系统是否能够满足用户需求,同时发现潜在的性能问题并加以解决。 首先,性能压力测试对于确保系…

《皮囊》阅读笔记

《皮囊》阅读笔记 2023年8月2号在杭州小屋读完,该书共收录14篇散文,内容大致分为两部分:前半部分讲述作者的阿太(外婆的母亲)、母亲、父亲关于生活哲学、房子、疾病与信仰的故事,后半部分讲述生活在小镇的张…

【BASH】回顾与知识点梳理(一)

【BASH】回顾与知识点梳理 一 前言一. 认识与学习 BASH1.1 硬件、核心与 Shell1.2 为何要学文字接口的 shell?1.3 系统的合法 shell 与 /etc/shells 功能1.4 Bash shell 的功能1.5 查询指令是否为 Bash shell 的内建命令: type1.6 指令的下达与快速编辑按…

122.买卖股票的最佳时机2

一、题目 122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();vector<vector<int>>dp(n,vector<int>(2,0));//0表示第i天不持有股…

python算法指南程序员经典,python算法教程pdf百度云

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;你也能看懂的python算法书 pdf&#xff0c;python算法教程这本书怎么样&#xff0c;现在让我们一起来看看吧&#xff01; 给大家带来的一篇关于算法相关的电子书资源&#xff0c;介绍了关于算法、详解、算法基础方面的内…

最细致讲解yolov8模型推理完整代码--(前处理,后处理)

研究yolov8时&#xff0c;一直苦寻不到Yolov8完整的模型推理代码演示&#xff0c;大部分人都是基于Yolo已经封装好的函数调用&#xff0c;这个网上教程很多&#xff0c;本文就不赘述这方面的内容了&#xff0c;接下来将细致全面的讲解yolov8模型推理代码&#xff0c;也就是yolo…

cloudstack远程调试

前置条件&#xff1a;服务器安装好cloudstack的management、agent; 1、managemeng、agent启动服务文件 packaging/systemd cloudstack-agent.default # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTIC…

ES6之Promise、Class类与模块化(Modules)

目录 PromiseClass类extendssuper Modules 模块系统export default 和对应importexport 和 import Promise Promise 是 ES6 引入的一种用于处理异步操作的对象。 它解决了传统回调函数&#xff08;callback&#xff09;模式中容易出现的回调地狱和代码可读性差的问题。 Promis…

数学学习——最优化问题引入、凸集、凸函数、凸优化、梯度、Jacobi矩阵、Hessian矩阵

文章目录 最优化问题引入凸集凸函数凸优化梯度Jacobi矩阵Hessian矩阵 最优化问题引入 例如&#xff1a;有一根绳子&#xff0c;长度一定的情况下&#xff0c;需要如何围成一个面积最大的图像&#xff1f;这就是一个最优化的问题。就是我们高中数学中最常见的最值问题。 最优化…

小白到运维工程师自学之路 第六十五集 (docker-compose)

一、概述 Docker Compose 的前身是 Fig&#xff0c;它是一个定义及运行多个 Docker 容器的工具。可以使用YAML文件来配置应用程序的服务。然后&#xff0c;使用单个命令&#xff0c;您可以创建并启动配置中的所有服务。Docker Compose 会通过解析容器间的依赖关系&#xff08;…

vmware网络配置

效果&#xff1a; 虚拟机和物理机网络互通&#xff1b; 虚拟机可以上外网 环境&#xff1a; vmware version 17.0.0 Centos 7.9 配置 1&#xff0c;vmware 菜单 - 编辑 - Virtual Network Edit 2&#xff0c; 选择VMnet8 VMnet information:NAT&#xff1b; 勾选2个…

ansible控制主机和受控主机之间免密及提权案例

目录 案例描述 环境准备 案例一--免密远程控制主机 效果展示&#xff1a; 解决方案 1.添加主机 2.通过ssh-key生成密钥对 3.生成ssh-copy-id 4.验证 案例二-----免密普通用户提权 效果展示 解决方案 1.使用普通用户&#xff0c;与案例一 一样&#xff0c;进行发送密钥…

【力扣每日一题】2023.8.2 翻转卡片游戏

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 这道题不是什么翻转卡片游戏&#xff0c;这就是纯纯的文字游戏&#xff0c;要是能看懂题目那就是非常简单&#xff0c;接下来我就给大家分…

低代码已经发展到什么水平了?

在数字化转型的浪潮下&#xff0c;企业和组织迫切需要更快速、高效的应用开发方式来满足日益复杂的业务需求。而低代码开发作为一种创新的开发方式&#xff0c;正在引领着应用开发的新潮流。低代码开发允许开发者以可视化的方式快速构建应用&#xff0c;减少了繁琐的代码编写&a…

android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用

android 如何分析应用的内存&#xff08;十五&#xff09;——Visual Studio Code 调试Android 应用 在上一篇文章介绍了jdb调试java应用 接下来介绍用UI界面调试java应用&#xff0c;达到同jdb一样的效果。 同样的UI界面有很多选择&#xff0c;如Eclipse&#xff0c;Android …

数论分块学习笔记

准备开始复习莫比乌斯反演&#xff0c;杜教筛这一部分&#xff0c;先复习一下数论分块 0.随便说说 数论分块可以计算如下形式的式子 ∑ i 1 n f ( i ) g ( ⌊ n i ⌋ ) \sum_{i1}^{n}f(i)g(\lfloor\frac{n}{i}\rfloor) ∑i1n​f(i)g(⌊in​⌋)。 利用的原理是 ⌊ n i ⌋ \lf…

GoogLeNet卷积神经网络-笔记

GoogLeNet卷积神经网络-笔记 GoogLeNet是2014年ImageNet比赛的冠军&#xff0c; 它的主要特点是网络不仅有深度&#xff0c; 还在横向上具有“宽度”。 由于图像信息在空间尺寸上的巨大差异&#xff0c; 如何选择合适的卷积核来提取特征就显得比较困难了。 空间分布范围更广的…

采集数据筛选-过滤不要数据或只保留指定数据

采集文章数据&#xff0c;有时候会遇到一些不需要采集的数据&#xff0c;或者只想采集一些特定的数据&#xff0c;可以使用简数采集器的内容过滤功能&#xff0c;对采集的数据进行筛选&#xff0c;只有符合的数据才采集保留。 可以用于过滤掉一些广告、专题、网站首页等无效数…