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

【Go自学版】01-基础

// 变量
var a, b, c = 8, 2.3, "hello"
var d float64;
e := 6var A []int;
var B [10]int;
C := [10]int{1, 2, 3, 4}
for i := 0; i < len(B); i ++ {}
for _, value := range C {}
D = make([]int, 3)
// len = 4, cap = 10, 扩容方式 cap*=2
E := make([]int, 4, 10)
E = append(E, 1)
E1 := E[0:2] // 浅拷贝,公用底层
E2 := make([]int, 3) 
copy(E2, E) // 深拷贝
E1[0] = 100 // E会改变,E2不会改变
// 导包方式
import (new_name "package_name1""package_name2". "package_name3"
)// typedef
type myint int
// map
var mp map[string]string
if mp == nil {fmt.Printf("空\n")}
mp = make(map[string]int, 10)
mp["one"] = 1
mp["two"] = 2cMap := make(map[string]string)
cMap["one"] = "1"
cMap["two"] = "22"
delete(cMap, "one")
cMap["two"] = "2"
// 析构函数, stack
func main() {defer fmt.Printf("defer 1\n")defer fmt.Printf("defer 2\n")
}
// 函数名开头小写表示私有,大写表示公有
func funName1() {}
func FunName2(a int, b string) (int, string) {ans := avar s string = breturn ans, s
}
// 本质是一个指针
type AnimalIF interface {Eat()Sleep()GetName() string
}type Dog struct {name string
}func (this *Dog) Eat() {fmt.Printf("Dog eat\n")
}func (this *Dog) Sleep() {fmt.Printf("Dog sleep\n")
}func (this *Dog) GetName() string {return this.name
}type Cat struct {name string
}func (this *Cat) Eat() {fmt.Printf("Cat eat\n")
}func (this *Cat) Sleep() {fmt.Printf("Cat sleep\n")
}func (this *Cat) GetName() string {return this.name
}func main() {var animal AnimalIFanimal = &Cat{"mike"}animal.Eat()animal.Sleep()dog := Dog{"jack"}fmt.Println(dog.GetName())
}
func testInterface(x interface{}) {value, f := x.(string)if f {fmt.Printf("value is %s", value)fmt.Printf("type is string")} else {fmt.Printf("type is not string")}
}
// [type, value]
type User struct {Id   intName string
}func (this User) Call() {fmt.Printf("user is called\n")fmt.Printf("%v\n", this)
}func reflectVar(x interface{}) {xValue := reflect.ValueOf(x)xType := reflect.TypeOf(x)fmt.Println(xType, xValue)for i := 0; i < xType.NumField(); i++ {field := xType.Field(i)value := xValue.Field(i).Interface()fmt.Printf("%s: %v = %v\n", field.Name, field.Type, value)}for i := 0; i < xType.NumMethod(); i++ {m := xType.Method(i)fmt.Printf("%s: %v\n", m.Name, m.Type)}
}func main() {user := User{11, "mike"}reflectVar(user)
}
// 标签
type User struct {Id   int    `info:"id" doc:"编号"`Name string `info:"name" doc:"姓名"`
}func FindTag(x interface{}) {// 传指针 FindTag(&user)t := reflect.TypeOf(x).Elem()// 传值 FindTag(user)//t := reflect.TypeOf(x)for i := 0; i < t.NumField(); i++ {tagString := t.Field(i).Tag.Get("info")docString := t.Field(i).Tag.Get("doc")fmt.Println("info: ", tagString, ",", "doc: ", docString)}
}// json
type Moive struct {// 变量开头大写且加tag才能进jsonTitle  string   `json:"title"`Year   int      `json:"year"`Price  float64  `json:"price"`Actors []string `json:"actors"`
}func ReadJson(movie interface{}) {jsonStr, err := json.Marshal(movie)if err != nil {fmt.Printf("json marshal error %v\n", err)} else {fmt.Printf("jsonStr = %s\n", jsonStr)newMovie := Moive{}err = json.Unmarshal(jsonStr, &newMovie)if err != nil {fmt.Printf("json unmarshal error %v\n", err)} else {fmt.Printf("newMoive: %v\n", newMovie)}}}func main() {user := User{11, "mike"}fmt.Println(user)FindTag(&user)movie := Moive{"喜剧之王", 2000, 10, []string{"周星驰", "张柏芝"}}ReadJson(movie)
}
命令功能
go mod init生成 go.mod 文件
go mod vendor导出项目所有依赖到 vendor 目录
go mod edit编辑 go.mod 文件
go mod download下载 go.mod 文件中指明的所有依赖
go mod tidy整理现有的依赖
go mod graph查看现有的依赖结构
go mod verify校验一个模块是否被篡改过
go mod why查看为什么需要依赖某模块
参数功能
GO111MODULE是否开启 go modules 模式
GOPROXY项目第三方依赖下载源地址
GOSUMDB校验拉取的第三方库是否完整
GONOPROXY设置 GOPRIVATE 即可
GONOSUMDB设置 GOPRIVATE 即可
GOPRIVATE当前项目根据GOPRIVATE下载(可用通配符 eg:*.exmaple.com,https://github.com/xxxx/xxx)
文件功能
go.mod当前项目模块名称,go版本号
.go源代码
znet项目直接依赖的是znet包
zinx项目间接依赖的是zinx包
go.sum罗列当前项目直接或间接依赖的所有模块版本,保证之后项目的以来版本不被篡改

g o . s u m : h 1 : h a s h ∣ x x x / g o . m o d h 1 : h a s h go.sum:h1:hash~|~xxx/go.mod~h1:hash go.sum:h1:hash  xxx/go.mod h1:hash

相关文章:

【Go自学版】01-基础

// 变量 var a, b, c 8, 2.3, "hello" var d float64; e : 6var A []int; var B [10]int; C : [10]int{1, 2, 3, 4} for i : 0; i < len(B); i {} for _, value : range C {} D make([]int, 3) // len 4, cap 10, 扩容方式 cap*2 E : make([]int, 4, 10) E …...

软文开头怎么写才能拿捏用户?媒介盒子为您解答

软文标题是吸引用户点击的关键因素&#xff0c;那软文开头就是决定用户能否读下去的主要因素&#xff0c;很多运营er在写文案时经常会面临的情况之一就是好不容易想到一个标题&#xff0c;点击率不错&#xff0c;但是开头不行用户一看开头&#xff0c;跑了&#xff01;如果不知…...

C语言算法与数据结构,旅游景区地图求最短路径

背景&#xff1a; 本次作业要求完成一个编程项目。请虚构一张旅游景区地图&#xff0c;景区地图包括景点&#xff08;结点&#xff09;和道路&#xff08;边&#xff09;&#xff1a;地图上用字母标注出一些点&#xff0c;表示景点&#xff08;比如&#xff0c;以点 A、B、C、…...

测试:SSE VS WebSocket

SSE&#xff08;Server-Sent Events&#xff09; SSE&#xff08;Server-Sent Events&#xff09;接口是一种实现服务器到客户端单向实时通信的技术。通过SSE&#xff0c;服务器可以主动向客户端推送数据&#xff0c;而不需要客户端不断地向服务器请求数据。这种技术特别适合于…...

Linux+Moba+虚拟机

软件&#xff1a; VMware Workstation ProMobaXterm 简介 是一款由VMware公司开发的强大的虚拟机软件。它可以在单台物理计算机上创建、运行和管理多个虚拟机&#xff0c;每个虚拟机都可以独立运行不同的操作系统和应用程序。 功能&#xff1a; 虚拟化&#xff1a;能…...

快手数仓面试题附答案

题目 1 讲一下你门公司的大数据项目架构&#xff1f;2 你在工作中都负责哪一部分3 spark提交一个程序的整体执行流程4 spark常用算子列几个&#xff0c;6到8个吧5 transformation跟action算子的区别6 map和flatmap算子的区别7 自定义udf&#xff0c;udtf&#xff0c;udaf讲一下…...

如何在Go中编写包

包由位于同一目录中的Go文件组成,这些文件在开头具有相同的package语句。你可以从包中包含额外的功能,使程序更复杂。有些包可以通过Go标准库获得,因此与Go安装一起安装。其他可以使用Go的go get命令安装。您还可以通过使用必要的package语句在要共享代码的相同目录中创建Go…...

JVM类加载全过程

Java虚拟机类加载的全过程&#xff0c;即加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化 一、加载 加载 是 类加载过程中的一个阶段&#xff0c; 有以下三部分组成 1&#xff09;通过一个类的全限定名来获取定义此类的二进制流 2&#xff09;将这…...

Uniapp安卓原生插件开发Demo

文章目录 前言一、安装开发工具二、导入uni插件原生项目三、开发Module四、开发Component五、合并原生代码到uniapp项目中总结 前言 当HBuilderX中提供的能力无法满足App功能需求&#xff0c;需要通过使用Andorid/iOS原生开发实现时&#xff0c;可使用App离线SDK开发原生插件来…...

Axure的安装与基本使用

目录 一.Axure是什么 二.Axure安装 2.1 一键式安装 2.2 汉化 2.3 授权登录 三.Axure的界面介绍及基本使用 3.1 菜单栏的使用 3.2 工具栏的使用 3.3 页面概要的使用及组件的使用 3.4 组件的样式设计 一.Axure是什么 Axure是一个流行的交互式原型设计工具&#xff0c;一般是…...

分布式锁实现方案 - Lock4j 使用

一、Lock4j 分布式锁工具 你是不是在使用分布式锁的时候&#xff0c;还在自己用 AOP 封装框架&#xff1f;那么 Lock4j 你可以考虑一下。 Lock4j 是一个分布式锁组件&#xff0c;其提供了多种不同的支持以满足不同性能和环境的需求。 立志打造一个简单但富有内涵的分布式锁组…...

[虚拟机]使用VM打开虚拟机电脑重启解决方案。

问题&#xff1a;打开虚拟机点击启动后&#xff0c;电脑会自动重启。&#xff08;WINDOWS10 20版本&#xff09; 解决步骤&#xff1a; 1、对Windows功能进行操作。 上图三个启用。 上图一个取消。 再次打开后&#xff0c;不报警&#xff0c;显示下图问题&#xff1a; 继续解…...

Linux 详细介绍strace命令

system call(系统调用)是程序向内核请求服务的一种编程方式&#xff0c;strace是一个功能强大的工具&#xff0c;可以跟踪用户进程和 Linux 内核之间的交互。 要了解操作系统如何工作&#xff0c;首先需要了解系统调用如何工作。操作系统的主要功能之一是为用户程序提供了一个…...

【知识分享】__RS485-嵌入式常用的通信协议

目录 前言 一、RS485简介 什么是串口 什么是串行通信 什么是并行通信 二、接口原理 1. 连接方式 2. 差分信号 三、485通讯接口的优势 1. 接口电平低&#xff0c; 不易损坏芯片。 2. 传输速率高 3. 抗干扰能力强 4. 传输距离远&#xff0c;支持节点多。 四、常见…...

Qt生成动态链接库并使用动态链接库

项目结构 整个工程由一个主程序构成和一个模块构成(dll)。整个工程的结构目录如下 Define.priMyProject.proMyProject.pro.user ---bin ---MainProgrammain.cppMainProgram.proMainProgram.pro.userwidget.cppwidget.hwidget.ui ---MathDllMathDll.proMathDll.pro.userMyMath.…...

E4990A 阻抗分析仪,20 Hz 至 10/20/30/50/120 MHz

01 E4990A 阻抗分析仪 20 Hz 至 10/20/30/50/120 MHz 产品综述&#xff1a; E4990A 阻抗分析仪具有 20 Hz 至 120 MHz 的频率范围&#xff0c;可在宽阻抗范围内提供出色的 0.045%&#xff08;典型值&#xff09;基本准确度&#xff0c;并内置 40 V 直流偏置源&#xff0c;适…...

k8s volumes and data

Overview 传统上&#xff0c;容器引擎(Container Engine)不提供比容器寿命更长的存储。由于容器被认为是瞬态(transient)的&#xff0c;这可能会导致数据丢失或复杂的外部存储选项。Kubernetes卷共享 Pod 生命周期&#xff0c;而不是其中的容器。如果容器终止&#xff0c;数据…...

万宾科技智能水环境综合治理监测系统效果

水环境综合治理是一项旨在全面改善水环境质量的系统工程。它以水体为对象&#xff0c;综合考虑各种因素&#xff0c;通过科学规划和技术手段&#xff0c;解决水环境污染、生态退化等问题&#xff0c;核心理念是“统一规划、分步实施&#xff1b;标本兼治&#xff0c;重在治本&a…...

掌控安全 暖冬杯 CTF Writeup By AheadSec

本来结束时发到了学校AheadSec的群里面了的&#xff0c;觉得这比赛没啥好外发WP的&#xff0c;但是有些师傅来问了&#xff0c;所以还是发一下吧。 文章目录 Web签到&#xff1a;又一个计算题计算器PHP反序列化又一个PHP反序列化 Misc这是邹节伦的桌面背景图什么鬼&#xff1f;…...

jQuery-操作DOM

使用jQuery操作DOM dom : 文档对象模型 就是HTML元素 $() 函数的2个用法: 用法1:放入一个字符串(选择器)表示获取元素 例如 $("p") $("#abc") $(".del") 用法2:放入一个函数&#xff0c;表示文档就绪函数 例如 $(function(){代…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...