【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插件安装

- 项目调试

基础语法
-
包(Package)
每个Go程序都必须属于某个包,通常是main包。package main -
导入包(Import)
使用import语句导入其他包。import "fmt" -
函数(Function)
使用func关键字定义函数。func main() {fmt.Println("Hello, World!") } -
变量(Variable)
使用var关键字声明变量,也可以使用短变量声明。var x int = 10 y := 20:=是短变量声明(short variable declaration)的语法,用于在函数内部声明和初始化变量。它可以用于定义新的变量,而不需要使用 var 关键字。使用:=声明的变量会根据右侧的表达式自动推断类型
-
控制结构(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) } -
数组和切片(Arrays and Slices)
arr := [5]int{1, 2, 3, 4, 5} slice := []int{1, 2, 3, 4, 5} -
结构体(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/onelog,go.mod中indirect注释的为间接依赖 - 运行:

使用 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!
}相关文章:
【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/amd64Go设置GOPROXY国内加速 windows // 启用 Go Modules 功能 PS C:\Users\kingchuxing…...
从0开始学习shell脚本
了解Shell和Shell脚本 Shell:Shell是一个命令解释器,用来执行用户输入的命令。常用的Shell包括Bash、Zsh、Ksh等。Linux默认的Shell通常是Bash。 Shell脚本:Shell脚本是由一系列命令组成的文件,脚本可以运行一连串命令ÿ…...
官方工具重装Windows 11当前版本 /绕过硬件检查/免U盘
官方工具重装Windows 11当前版本 /绕过硬件检查/免U盘 官方工具重装Windows 11当前版本 /绕过硬件检查/免U盘_win11安装跳过检测-CSDN博客...
JavaEE初阶---网络原理/UDP服务器客户端程序
文章目录 1.网络初识2.网络编程2.1TCP/UDP区别介绍2.2UDP的socket api使用2.3UDP协议里面的服务器客户端程序 1.网络初识 网络和计算机类似:都是属于军用》民用; 网络诞生于美苏争霸时期,当时就感觉核战争一触即发,形式非常严峻…...
每天10个vue面试题(六)
1、对Vue设计原则的理解? 渐进式JavaScript框架:与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化…...
Qt:信号和槽
目录 关于信号 connect函数 关于connect connect的使用 自定义信号、自定义槽 自定义槽 第一种方式自定义槽 第二种方式自定义槽 自定义信号 信号槽 带参数的信号槽 参数个数一致的示例 参数个数不一致的示例 Q_OBJECT 信号和槽存在的意义 disconnect函数 使用…...
可以免费商用的字体下载
这里介绍一个开源仓库,收录的可以免费商用的字体,目前中文字体1308款,英文字体980款,共约2288多款字体。 Description Free fonts that can be used commercially.There are currently 1308 Chinese fonts and 980 English font…...
centos7之LVS-TUNNEL模式
介绍 优缺点以及适用场景 优点:能负载更多的Realserver减轻LB的压力。LVS和Realserver可以不再同一网段。 缺点:tun模式的开销比较大(出口流量大),性能不如DR模式。不支持端口转发。后端Realserver系统必须支持tunnel协议。 适用ÿ…...
Linux驱动开发(3):字符设备驱动
上一章节我们了解到什么是内核模块,模块的加载卸载详细过程以及内核模块的使用等内容。 本章,我们将学习驱动相关的概念,理解字符设备驱动程序的基本框架,并从源码上分析字符设备驱动实现和管理。 主要内容有如下五点:…...
刘艳兵-DBA023-控制文件是Oracle 数据库用来查找数据库文件,控制文件包含以下哪些信息:
控制文件是Oracle 数据库用来查找数据库文件,控制文件包含以下哪些信息: A 表空间信息 B 创建数据库的时间戳 C 有关数据文件、 联机重做日志文件、和归档重做日志文件的信息 D 数据库名称和数据库唯一标识符(DBID) E RMAN备份…...
Vue Scoped CSS深度解析:原理、误区与最佳实践
引言 在Vue开发中,Scoped CSS是一个强大而复杂的功能。它允许我们将样式限制在特定组件内,但同时也带来了一些细微的行为,可能导致意外的样式"泄漏"。本文将深入探讨Vue Scoped CSS的工作原理,解释常见的误区ÿ…...
744. 寻找比目标字母大的最小字母
目录 题目解法一解法二如何比较字符串letters.back()*upper_bound为什么要加* 题目 给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这…...
浅谈QT中Tab键的切换逻辑
浅谈QT中Tab键的切换逻辑 无意中发现在输入界面中按下Tab键时,没有按照预想的顺序切换焦点事件,如下图所示 这个现象还是很有趣,仔细观察了下,默认的切换顺序是按照控件拖入顺序,那么知道了这个问题想要解决起来就很简…...
基于MoviNet检测视频中危险暴力行为
项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【Faster & Mask R-CNN模型实现啤酒瓶瑕疵检测】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生…...
《等保测评:抵御网络威胁的盾牌》
在网络空间的无垠战场上,网络安全威胁如同暗夜之狼,潜伏在每一个角落,随时准备对企业和个人发动致命一击。在这场没有硝烟的战争中,等保测评作为国家网络安全等级保护制度的重要组成部分,犹如坚固的盾牌,为…...
前端必知必会-JavaScript 对象属性
文章目录 JavaScript 对象属性访问 JavaScript 属性添加新属性删除属性嵌套对象 总结 JavaScript 对象属性 对象是无序的属性集合 属性是 JavaScript 对象中最重要的部分。 属性可以更改、添加、删除,有些属性是只读的。 访问 JavaScript 属性 访问对象属性的语…...
双11都有什么值得入手的好物?双十一最建议买的5样东西
双11的脚步逐步渐近,我们点开各大电商平台也可以看到,各个商家已经开始大激烈的促销大战,那么双十一作为一年之中最盛大的购物节,都有什么值得入手的好物呢?今天就给大家建议买的5样东西,从家电好物到生活用…...
Xcode 15.4 运行flutter项目,看不到报错信息详情?
Xcode升级后,遇到了奇怪的事情: 运行flutter项目,左侧栏显示有报错信息,但是点击并没有跳转出具体的error详情。【之前都会自己跳转出来的,升级后真的是无厘头】 方案: 点击左侧导航栏最右边的图标——>…...
AMD开始为基于RDNA的GPU开发自己的神经超采样和去噪技术
NVIDIA 的升级技术已经取得了长足的进步,这些技术解决了现代游戏在开启光线追踪时在苛刻场景中的性能问题。NVIDIA 开始实施各种光线追踪和升级技术后,AMD 和英特尔也紧随其后,推出了自己的 FSR 和 XeSS 升级方法。据报道,AMD 将跟…...
Python中的文件I/O操作
在Python编程中,文件I/O(输入/输出)是一个重要的主题,涉及如何读取和写入文件。无论是处理文本文件还是二进制文件,Python提供了简洁易用的接口。本文将介绍如何在Python中进行文件I/O操作,包括读取、写入和…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
