【GO学习笔记 go基础】编译器下载安装+Go设置代理加速+项目调试+基础语法+go.mod项目配置+接口(interface)

编译器下载&安装

  • 下载并安装go1.23.2.windows-amd64.msi默认安装再C:\Program Files\Go\
    在这里插入图片描述
PS C:\Users\kingchuxing\Documents> go version     
go version go1.23.2 windows/amd64

Go设置GOPROXY国内加速

  • windows
// 启用 Go Modules 功能
PS C:\Users\kingchuxing\Documents\GO_PORJECTS\test> $env:GO111MODULE="on"
// 配置 GOPROXY 环境变量,使用七牛云
PS C:\Users\kingchuxing\Documents\GO_PORJECTS\test> $env:GOPROXY="https://goproxy.cn,direct"
// 阿里云 $env:GOPROXY="https://mirrors.aliyun.com/goproxy/,direct"
// 官方 $env:GOPROXY="https://goproxy.io,direct"

vscode插件安装

在这里插入图片描述

  • 项目调试
    在这里插入图片描述

基础语法

  1. 包(Package)
    每个Go程序都必须属于某个包,通常是main包。

    package main
    
  2. 导入包(Import)
    使用import语句导入其他包。

    import "fmt"
    
  3. 函数(Function)
    使用func关键字定义函数。

    func main() {fmt.Println("Hello, World!")
    }
    
  4. 变量(Variable)
    使用var关键字声明变量,也可以使用短变量声明。

    var x int = 10
    y := 20
    
    • := 是短变量声明(short variable declaration)的语法,用于在函数内部声明和初始化变量。它可以用于定义新的变量,而不需要使用 var 关键字。使用 := 声明的变量会根据右侧的表达式自动推断类型
  5. 控制结构(Control Structures)
    包括条件语句和循环。

    if x < y {fmt.Println("x is less than y")
    } else {fmt.Println("x is greater than or equal to y")
    }for i := 0; i < 5; i++ {fmt.Println(i)
    }
    
  6. 数组和切片(Arrays and Slices)

    arr := [5]int{1, 2, 3, 4, 5}
    slice := []int{1, 2, 3, 4, 5}
    
  7. 结构体(Structs)
    用于定义自定义数据类型。

    type Person struct {Name stringAge  int
    }
    

hello.go

package mainimport "fmt"func main() {fmt.Println("Hello, World!")
}
PS C:\Users\kingchuxing\Documents\GO_PORJECTS\test> go run hello.go
Hello, World!
PS C:\Users\kingchuxing\Documents\GO_PORJECTS\test> go build hello.go
PS C:\Users\kingchuxing\Documents\GO_PORJECTS\test> .\hello.exe
Hello, World!

go.mod 文件

  • go.mod 文件是Go模块的配置文件,包含模块路径和依赖版本信息,用于管理项目依赖。
  • 下面是一个使用 go.mod 文件的简单示例,包括如何创建一个Go模块并使用它。

步骤 1: 创建一个新目录

首先,在你的工作空间中创建一个新目录,并进入该目录:

mkdir mymodule
cd mymodule

步骤 2: 初始化Go模块

  • 使用 go mod init 命令初始化一个新的Go模块。这里我们将模块命名为 github.com/yourusername/mymodule,请根据你的实际情况修改。
go mod init github.com/yourusername/mymodule

这将生成一个 go.mod 文件,内容大致如下:

module github.com/yourusername/mymodulego 1.20 // Go版本

步骤 3: 创建&运行Go源文件

  • 按照 https://pkg.go.dev/github.com/francoispqt/onelog#section-readme
  • 安装依赖 :go get github.com/francoispqt/oneloggo.modindirect注释的为间接依赖
  • 运行:
    在这里插入图片描述

使用 go.mod 文件来管理 Go 项目:

  • 运行代码

使用 go run 命令来运行你的代码:

go run .
  • 更新依赖

要更新依赖到最新版本,可以使用:

go get -u
  • 清理依赖

如果你希望清理未使用的依赖,可以使用:

go mod tidy

go 调用自己所实现模块示例

  • mymodule.go文件:
// mymodule.go
package mysubmoduleimport "fmt"// HelloWorld 打印问候语
func HelloWorld(name string) {fmt.Printf("Hello, %s!\n", name)
}
  • go.mod文件
module mymodulego 1.23.2
  • main.go文件
package mainimport (mysubmodule "mymodule/mysubmodule" // 导入自定义模块
)func main() {mysubmodule.HelloWorld("Alice") // 调用模块中的函数
}
  • 项目结构和运行结果:
    在这里插入图片描述

go接口(interface)

package mainimport ("fmt" 
)// 定义一个接口 Animal,接口中包含一个方法 Speak
type Animal interface {Speak() string // Speak 方法返回一个字符串
}// 定义一个结构体 Dog,表示一种动物
type Dog struct{}// Dog 结构体实现了 Animal 接口的 Speak 方法
func (d Dog) Speak() string { //  (d Dog)  是一个方法接收者(method receiver),将方法与类型联系起来return "Woof!" // 返回字符串 "Woof!",表示狗的叫声
}// 定义另一个结构体 Cat,表示另一种动物
type Cat struct{}// Cat 结构体也实现了 Animal 接口的 Speak 方法
func (c Cat) Speak() string {return "Meow!" // 返回字符串 "Meow!",表示猫的叫声
}// 定义一个函数 MakeItSpeak,接受一个 Animal 接口类型的参数
func MakeItSpeak(a Animal) {// 调用参数 a 的 Speak 方法,并将返回值打印到控制台fmt.Println(a.Speak())
}func main() {// 创建一个 Dog 类型的实例dog := Dog{}// 创建一个 Cat 类型的实例cat := Cat{}// 调用 MakeItSpeak 函数,传入 dog 实例MakeItSpeak(dog) // 输出: Woof!// 调用 MakeItSpeak 函数,传入 cat 实例MakeItSpeak(cat) // 输出: Meow!
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

appium+mumu模拟器+python 嚼碎菜鸟教程

1、android sdk 下载安装 下载地址&#xff1a;https://www.androiddevtools.cn/index.html# 选择版本&#xff1a;android sdk【sdk tools:installer_r24.4.1-windows.exe】 参考步骤&#xff1a;https://blog.csdn.net/2401_83004375/article/details/139300339 2、jdk 安装…

关于我的数据库——MySQL——第二篇

&#xff08;叠甲&#xff1a;如有侵权请联系&#xff0c;内容都是自己学习的总结&#xff0c;一定不全面&#xff0c;仅当互相交流&#xff08;轻点骂&#xff09;我也只是站在巨人肩膀上的一个小卡拉米&#xff0c;已老实&#xff0c;求放过&#xff09;。 表的操作 创建表…

Python飞舞蝙蝠

目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码…

Canvas简历编辑器-选中绘制与拖拽多选交互设计

Canvas简历编辑器-选中绘制与拖拽多选交互设计 在之前我们聊了聊如何基于Canvas与基本事件组合实现了轻量级DOM&#xff0c;并且在此基础上实现了如何进行管理事件以及多层级渲染的能力设计。那么此时我们就依然在轻量级DOM的基础上&#xff0c;关注于实现选中绘制与拖拽多选交…

基于Multisim的四位抢答器设计与仿真

四位选手进行抢答比赛&#xff0c;用基本门电路及集成逻辑器件构成四人抢答器。选手编号分别为1&#xff0c;2&#xff0c;3&#xff0c;4号&#xff0c;用S1&#xff0c;S2&#xff0c;S3&#xff0c;S4四个按钮作为抢答按钮&#xff0c;S0按钮为总清零按钮。当四人中任何一个…

20241031使用Rockchip原厂RK3566的Buildroot编译RK3399方案

20241031使用Rockchip原厂RK3566的Buildroot编译RK3399方案 2024/10/31 18:06 RK3566_Linux5.10_V1.2.0_20241022.tar.gz rk356x_linux5p10_v120_20241025_1020.tgz 由于Rockchip可能像全志一样&#xff0c;为了简单&#xff0c;直接所有的SDK都打包/放置在一个git仓库里了&…

算法定制LiteAIServer视频智能分析软件的过亮、过暗及抖动检测应用场景

在现代社会中&#xff0c;视频监控系统扮演着举足轻重的角色&#xff0c;其视频质量直接关乎监控系统的可靠性与有效性。算法定制LiteAIServer通过引入抖动检测和过亮过暗检测功能&#xff0c;为视频监控系统的稳定性和用户体验带来了显著提升。 以下是对这两种功能的技术实现、…

OpenCV 学习笔记

OpenCV 环境安装 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 显示窗口 cv2.namedWindow 是 OpenCV 库中的一个函数&#xff0c;用于创建一个命名窗口&#xff0c;以便在该窗口中显示图像或进行其他图形操作。这个函数在处理图像和视频时非常…

超越 YOLOv8,MAF-YOLO利用重参化异构卷积大幅度提升多尺度信息融合能力!

由于多尺度特征融合的有效性能&#xff0c;路径聚合FPN&#xff08;PAFPN&#xff09;被广泛应用于YOLO检测器中。 然而&#xff0c;它不能同时高效且自适应地融合高级语义信息与低级空间信息。本文提出了一种名为MAF-YOLO的新模型&#xff0c;这是一个具有多功能 Neck 网络的新…

堆(堆排序,TOP K, 优先级队列)

1 概念解释 堆的定义&#xff1a;堆是一颗完全二叉树&#xff0c;分为大堆和小堆 大堆&#xff1a;一棵树中&#xff0c;任何父亲节点都大于等于孩子的节点&#xff0c;大堆的根结点最大 小堆&#xff1a;一棵树中&#xff0c;任何父亲节点都小于等于孩子节点&#xff0c;小堆…

练习LabVIEW第二十八题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第二十八题&#xff1a; 建立一个VI&#xff0c;模拟滚动—个骰子(骰子取值1~6)&#xff0c;跟踪骰子滚动后的取值出现次数…

延迟队列的安装步骤

RabbitMQ 中的延迟队列&#xff08;Delayed Queue&#xff09;是一种特殊的队列&#xff0c;用于在消息被发送后延迟一段时间再投递给消费者。它在许多场景中非常有用&#xff0c;例如需要定时执行的任务、限流、重试机制等。 使用场景 定时任务: 例如发送提醒邮件或通知&…

六,Linux基础环境搭建(CentOS7)- 安装HBase

Linux基础环境搭建&#xff08;CentOS7&#xff09;- 安装HBase 大家注意以下的环境搭建版本号&#xff0c;如果版本不匹配有可能出现问题&#xff01; 一、HBase下载及安装 HBase是一个分布式的、面向列的开源数据库&#xff0c;该技术来源于 Fay Chang 所撰写的Google论文“…

在 .NET 8 Web API 中实现 Entity Framework 的 Code First 方法

本次介绍分为3篇文章&#xff1a; 1&#xff1a;.Net 8 Web API CRUD 操作.Net 8 Web API CRUD 操作-CSDN博客 2&#xff1a;在 .Net 8 API 中实现 Entity Framework 的 Code First 方法https://blog.csdn.net/hefeng_aspnet/article/details/143229912 3&#xff1a;.NET …

斐波那契时间序列,精准捕捉市场拐点 MT4免费公式源码!

指标名称&#xff1a;斐波那契时间序列 版本&#xff1a;MT4 ver. 2.01 斐波那契时间序列是一种技术分析工具&#xff0c;通过将斐波那契数列&#xff08;如1, 2, 3, 5, 8, 13等&#xff09;应用于时间轴上&#xff0c;用于预测市场价格的时间周期拐点。斐波那契时间序列在股…

Unsafe Fileupload-pikachu

系列目录 第一章 暴力破解 第二章 Cross-Site Scripting-pikachu 第三章 CSRF 第四章 sql-injection 第五章 RCE 第六章 File inclusion 第七章 Unsafe filedownload 第八章 Unsafe fileupload 概述 不安全的文件上传漏洞概述 文件上传功能在web应用系统很常见&#x…

嵌入式学习-网络-Day05

嵌入式学习-网络-Day05 1.网络超时检测 1.1应用场景 1.2设置超时检测 1&#xff09;通过参数设置 2&#xff09;setsockopt属性设置 3&#xff09;定时器alarm设置 2.广播 2.1广播发送流程&#xff1a; 2.2广播接收流程&#xff1a; 3.组播 3.1组播发送流程 3.2组播接收流程 4.…

Android启动流程_SystemServer阶段

前言 上一篇文档我们描述了在 Android 启动流程中 Zygote 部分的内容&#xff0c;从 Zygote 的配置、启动、初始化等内容展开&#xff0c;描述了 Zygote 在 Android 启动中的功能逻辑。本篇文档将会继续 Android 启动流程的描述&#xff0c;从 SystemServer 进程的内容展开&am…

一年期免费HTTPS证书:网络安全新选择

HTTPS证书的重要性 HTTPS证书&#xff0c;全称为安全套接字层/传输层安全协议证书&#xff0c;是一种在互联网上建立安全连接的数字证书。它通过公钥加密技术&#xff0c;对网站和用户之间的数据传输进行加密&#xff0c;有效防止数据被窃取或篡改&#xff0c;保障用户信息的安…

(实战)WebApi第10讲:Swagger配置、RESTful与路由重载

一、Swagger配置 1、导入SwashBuckle.AspNetCore包 2、在.NET Core 5框架里的startup.cs文件里配置swagger 3、在.NET Core 6框架里的Program.cs文件里配置swagger 二、RESTful风格&#xff1a;路由重载&#xff0c;HttpGet()括号中加参数 &#xff08;1&#xff09;原则&…