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

【GO学习笔记 go基础】编译器下载安装+Go设置代理加速+项目调试+基础语法+go.mod项目配置+接口(interface)
文章目录编译器下载安装WINDOWSGo设置GOPROXY国内加速vscode插件安装基础语法hello.gogo.mod 文件步骤 1: 创建一个新目录步骤 2: 初始化Go模块步骤 3: 创建运行Go源文件使用 go.mod 文件来管理 Go 项目go 调用自己所实现模块示例go接口interface编译器下载安装WINDOWS下载并安装go1.23.2.windows-amd64.msi默认安装再C:\Program Files\Go\PSC:\Users\kingchuxing\Documentsgo version go version go1.23.2windows/amd64Go设置GOPROXY国内加速windows// 启用 Go Modules 功能PSC:\Users\kingchuxing\Documents\GO_PORJECTS\test$env:GO111MODULEon// 配置 GOPROXY 环境变量,使用七牛云PSC:\Users\kingchuxing\Documents\GO_PORJECTS\test$env:GOPROXYhttps://goproxy.cn,direct// 阿里云 $env:GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct// 官方 $env:GOPROXYhttps://goproxy.io,directvscode插件安装项目调试基础语法包Package每个Go程序都必须属于某个包通常是main包。packagemain导入包Import使用import语句导入其他包。importfmt函数Function使用func关键字定义函数。funcmain(){fmt.Println(Hello, World!)}变量Variable使用var关键字声明变量也可以使用短变量声明。varxint10y:20:是短变量声明short variable declaration的语法用于在函数内部声明和初始化变量。它可以用于定义新的变量而不需要使用 var 关键字。使用:声明的变量会根据右侧的表达式自动推断类型控制结构Control Structures包括条件语句和循环。ifxy{fmt.Println(x is less than y)}else{fmt.Println(x is greater than or equal to y)}fori:0;i5;i{fmt.Println(i)}数组和切片Arrays and Slicesarr:[5]int{1,2,3,4,5}slice:[]int{1,2,3,4,5}结构体Structs用于定义自定义数据类型。typePersonstruct{NamestringAgeint}hello.gopackagemainimportfmtfuncmain(){fmt.Println(Hello, World!)}PSC:\Users\kingchuxing\Documents\GO_PORJECTS\testgo run hello.go Hello,World!PSC:\Users\kingchuxing\Documents\GO_PORJECTS\testgo build hello.goPSC:\Users\kingchuxing\Documents\GO_PORJECTS\test.\hello.exe Hello,World!go.mod 文件go.mod 文件是Go模块的配置文件包含模块路径和依赖版本信息用于管理项目依赖。下面是一个使用go.mod文件的简单示例包括如何创建一个Go模块并使用它。步骤 1: 创建一个新目录首先在你的工作空间中创建一个新目录并进入该目录mkdirmymodulecdmymodule步骤 2: 初始化Go模块使用go mod init命令初始化一个新的Go模块。这里我们将模块命名为github.com/yourusername/mymodule请根据你的实际情况修改。go mod init github.com/yourusername/mymodule这将生成一个go.mod文件内容大致如下module github.com/yourusername/mymodulego1.20// Go版本步骤 3: 创建运行Go源文件按照 https://pkg.go.dev/github.com/francoispqt/onelog#section-readme安装依赖 go get github.com/francoispqt/oneloggo.mod中indirect注释的为间接依赖运行使用go.mod文件来管理 Go 项目运行代码使用go run命令来运行你的代码go run.更新依赖要更新依赖到最新版本可以使用go get-u清理依赖如果你希望清理未使用的依赖可以使用go mod tidygo 调用自己所实现模块示例mymodule.go文件// mymodule.gopackagemysubmoduleimportfmt// HelloWorld 打印问候语funcHelloWorld(name string){fmt.Printf(Hello, %s!\n,name)}go.mod文件module mymodule go1.23.2main.go文件packagemainimport(mysubmodulemymodule/mysubmodule// 导入自定义模块)funcmain(){mysubmodule.HelloWorld(Alice)// 调用模块中的函数}项目结构和运行结果go接口interfacepackagemainimport(fmt)// 定义一个接口 Animal接口中包含一个方法 Speaktype Animalinterface{Speak()string// Speak 方法返回一个字符串}// 定义一个结构体 Dog表示一种动物type Dog struct{}// Dog 结构体实现了 Animal 接口的 Speak 方法func(d Dog)Speak()string{// (d Dog) 是一个方法接收者method receiver,将方法与类型联系起来returnWoof!// 返回字符串 Woof!表示狗的叫声}// 定义另一个结构体 Cat表示另一种动物type Cat struct{}// Cat 结构体也实现了 Animal 接口的 Speak 方法func(c Cat)Speak()string{returnMeow!// 返回字符串 Meow!表示猫的叫声}// 定义一个函数 MakeItSpeak接受一个 Animal 接口类型的参数funcMakeItSpeak(a Animal){// 调用参数 a 的 Speak 方法并将返回值打印到控制台fmt.Println(a.Speak())}funcmain(){// 创建一个 Dog 类型的实例dog:Dog{}// 创建一个 Cat 类型的实例cat:Cat{}// 调用 MakeItSpeak 函数传入 dog 实例MakeItSpeak(dog)// 输出: Woof!// 调用 MakeItSpeak 函数传入 cat 实例MakeItSpeak(cat)// 输出: Meow!}