Go学习第一天

闲聊两句

从事java后端开发8年多,期间也曾零星看过Go语言、Python、Erlang等等,但都未曾认真学习过,恰好公司最近项目需要,之前用Go开发的项目因为同事离职,暂未人来接手,所以老大就找到我和另外一个同事,希望我们俩尽快把Go学起来并把项目维护起,给了两个周的过渡期,说实话,时间真的挺紧的,但是问题不大,闲聊到此,赶紧学起来吧!

Go的优势

  • 可直接编译成机器码
  • 不依赖其他库
  • 直接运行即可部署

静态类型语言:编译的时候检查出来影藏的大多数问题

语言层面的并发:1.天生的基因支持 2.充分的利用多核

强大的标准库: runtime系统调度机制,已经实现高效的垃圾回收机制,丰富的标准库

只有25个关键字,C语言简洁基因,内嵌C语法支持,面相对象特征(封装、集成、多态),跨平台

记录重点

import导包

  • 导入不使用,会报错,需要注释掉,或者在导包前加”_” 例如: _“demo-go-middle/study”

  • 可以给导入的包起一个别名mylib2 “demo-go-middle/study1”

  • 也可以使用”.“ 的方式进行导包,这样在调用接口的时候,就不用加类名,如果两个方法同名且在不同的类中,那么不建议使用”.”的方式

示例代码:

package main

import (
	mylib1 "demo-go-middle/study"
	. "emo-go-middle/study1"
)

func main() {
	mylib1.Lib1Test()
	Lib2Test()
}

请添加图片描述

init函数

请添加图片描述

iota 只能配合const()一起使用,iota只有在const进行累加效果

示例代码:

package main

import "fmt"

// 用const来定义枚举类型
const (
	// 可以在const()添加一个关键字 iota,每行的iota都会累加1,第一行的iota的默认值是0
	BEIJING   = 10 * iota // iota = 0
	SHANGHAI              // iota = 1
	CHONGQING             // iota = 2
)

const (
	a, b = iota + 1, iota + 2 // iota = 0, a = iota +1, b = iota +2, a = 1, b = 2
	c, d                      // iota = 1, c = iota +1, d = iota +2, c = 2, d = 3
	e, f                      // iota = 2, e = iota +1, f = iota +2, e = 3, f = 4
	g, h = iota * 2, iota * 3 // iota = 3, g = iota *2, h = iota *3, g = 6, h = 9
	i, k                      // iota = 4, i = iota *2, k = iota *3, i = 8, k = 12
)

func main() {
	// 用const定义常量,可以用来定义枚举类型
	const length int = 10
	fmt.Println("length =", length)
	fmt.Println("======================")
	fmt.Println("BEIJING =", BEIJING)
	fmt.Println("SHANGHAI =", SHANGHAI)
	fmt.Println("CHONGQING =", CHONGQING)
	fmt.Println("======================")
	fmt.Println("a =", a, ",b=", b)
	fmt.Println("c =", c, ",d=", d)
	fmt.Println("e =", e, ",f=", f)
	fmt.Println("g =", g, ",h=", h)
	fmt.Println("i =", i, ",k=", k)
}

一个类中,方法名称需要大写才能让外部调用,对外开放,如果方法名称不首字母大写,那么只能方法内调用 eg: LibTest()

指针

package main

import "fmt"

func changeValue(p int) {
	p = 10
}

func main() {
	var a int = 1
	changeValue(a)
	fmt.Println("a = ", a)
}

package main

import "fmt"

func changeValue(p *int) {
	*p = 10
}

func main() {
	var a int = 1
	changeValue(&a)
	fmt.Println("a = ", a)
}

请添加图片描述

*代表指针
&代表内存地址

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

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

相关文章

【RabbitMQ(day3)】扇形交换机和主题交换机的应用

文章目录 第三种模型(Publish/Subscribe 发布/订阅)扇型(funout)交换机Public/Subscribe 模型绑定 第四、第五种模型(Routing、Topics)第四种模型(Routing)主题交换机(To…

使用css和js给按钮添加微交互的几种方式

使用css和js给按钮添加微交互的几种方式 在现实世界中,当我们轻弹或按下某些东西时,它们会发出咔嗒声,例如电灯开关。有些东西会亮起或发出蜂鸣声,这些响应都是“微交互”,让我们知道我们何时成功完成了某件事。在本文…

一起学数据结构(2)——线性表及线性表顺序实现

目录 1. 什么是数据结构: 1.1 数据结构的研究内容: 1.2 数据结构的基本概念: 1.2.1 逻辑结构: 1.2.2 存储结构: 2. 线性表: 2.1 线性表的基本定义: 2.2 线性表的运用: 3 .线性…

对话CSDN副总裁-邹欣:先行动的才是赢家,践行长期主义的价值创造者终将收获价值 | COC上海城市开发者社区

文章目录 ⭐️ COC上海城市开发者社区的首次集结契机⭐️ 关于 "技术人如何应对35岁中年危机"🌟 30岁了没转管理,应该焦虑么?🌟 30岁没转管理,是否还有其他选择? ⭐️ 践行长期主义的价值创造者终…

DHorse v1.3.0 发布,基于k8s的发布平台

综述 DHorse是一个简单易用、以应用为中心的云原生DevOps系统,具有持续集成、持续部署、微服务治理等功能,无需安装依赖Docker、Maven、Node等环境即可发布Java、Vue、React应用,主要特点:部署简单、操作简洁、功能快速。 新增特…

AI情绪鼓励师(基于PALM 2.0 finetune)

AI情绪鼓励师(基于PALM 2.0 finetune) 目录 一、写在前面的话 二、前言 三、获取用于finetune的“夸夸”数据集 四、 获取并finetune PALM 2.0 预训练生成模型 模型 五、模型调用应用 一、写在前面的话 从小我就是极端内向和社恐的孩子,我普通之极…

【Uniapp 中实现微信登录】

要在 Uniapp 中实现微信登录,需要完成以下步骤: 在微信开放平台注册一个应用,并获取到该应用的 AppID 和 AppSecret。 在 manifest.json 中点击App模块配置。勾选微信登录模块,填入该应用的 AppID 在代码中调用 uni.login 方法&…

算法训练营第五十七天||647.回文子串、516.最长回文子序列、动态规划总结

647.回文子串 出自代码随想录 如果大家做了很多这种子序列相关的题目,在定义dp数组的时候 很自然就会想题目求什么,我们就如何定义dp数组。 绝大多数题目确实是这样,不过本题如果我们定义,dp[i] 为 下标i结尾的字符串有 dp[i]个…

IntelliJ IDEA 2023.2新特性详解第二弹!

4 性能分析器 4.1 从 Run(运行)工具窗口使用分析功能 2023.2 中,可直接从 Run(运行)工具窗口轻松访问 IntelliJ 分析器的功能。 使用新按钮,点击即可调用: Attach IntelliJ Profiler&#xff…

【Java多线程学习4】volatile关键字及其作用

说说对于volatile关键字的理解,及的作用 概述 1、我们知道要想线程安全,就需要保证三大特性:原子性,有序性,可见性。 2、被volatile关键字修饰的变量,可以保证其可见性和有序性,但是volatile…

实验-路由器配置静态路由

软件:cicso packet tracer 8.0 拓扑图:路由器:Router-PT、连接线:Serial DTE、连接口:Serial口(serial是串行口,一般用于连接设备,不能连接电脑) 实验步骤: 1、构建拓扑图&#xf…

pytorch学习——正则化技术——权重衰减

一、概念介绍 权重衰减(Weight Decay)是一种常用的正则化技术,它通过在损失函数中添加一个惩罚项来限制模型的复杂度,从而防止过拟合。 在训练参数化机器学习模型时, 权重衰减(weight decay)是…

windows环境下adb 下载和配置,连接手机。

ADB下载地址: https://adbdownload.com/ 选择下载windows系统的。 下载后解压,查看adb.exe所在的目录,如下 这里将路径复制下来:D:\ADB 配置到系统环境变量中。 然后再打开cmd,输入adb version查看版本。 出现…

2023.8.1号论文阅读

文章目录 MCPA: Multi-scale Cross Perceptron Attention Network for 2D Medical Image Segmentation摘要本文方法实验结果 SwinMM: Masked Multi-view with SwinTransformers for 3D Medical Image Segmentation摘要本文方法实验结果 MCPA: Multi-scale Cross Perceptron Att…

极简在线商城系统,支持docker一键部署

Hmart 给大家推荐一个简约自适应电子商城系统,针对虚拟商品在线发货,支持企业微信通知,支持docker一键部署,个人资质也可搭建。 前端 后端 H2 console 运行命令 docker run -d --name mall --restartalways -p 8080:8080 -e co…

10. Mybatis 项目的创建

目录 1. Mybatis 概念 2. 第一个 Mybits 查询 2.1 创建数据库和表 2.2 添加 Mybatis 框架支持 2.3 添加配置文件 2.4 配置 MyBatis 中的 XML 路径 2.5 添加业务代码 在学习 Mybatis 之前,我们需要知道 Mybatis 和 Spring 没有任何的关系。如果一定要强调二者…

ChatGPT安全技术

前言 近期,Twitter 博主 lauriewired 声称他发现了一种新的 ChatGPT"越狱"技术,可以绕过 OpenAI 的审查过滤系统,让 ChatGPT 干坏事,如生成勒索软件、键盘记录器等恶意软件。 他利用了人脑的一种"Typoglycemia&q…

Kubernetes系列

文章目录 1 详解docker,踏入容器大门1.1 引言1.2 初始docker1.3 docker安装1.4 docker 卸载1.5 docker 核心概念和底层原理1.5.1 核心概念1.5.2 docker底层原理 1.6 细说docker镜像1.6.1 镜像的常用命令 1.7 docker 容器1.8 docker 容器数据卷1.8.1 直接命令添加1.8.2 Dockerfi…

远程控制平台四之优化部署

服务器端打包 把服务器打成jar包对于后台开发的朋友来说小菜一碟,但对于前端开发可能有些细节要注意一下,尤其是有依赖其他第三方库的情况下,这里梳理了一下流程: File – Project Structure – Artifacts – add – JAR – From modules and dependencies 选中module和主…

OpenCVForUnity(十)扩张与侵蚀效果

文章目录 前言扩张案例展示 侵蚀案例展示 结语: 前言 在这个教程中,您将学习两种常见的图像形态运算符:侵蚀和膨胀。为此,您将使用OpenCV库中的两个函数:erode 和 dilate。 形态操作是一组基于形状的图像处理操作。形态…