GO语言
深思熟虑之后决定先入门go折腾折腾,本来也犹豫不定,但是悠哥说的那句,年轻就是要去折腾.不管如何就先,开始着手去学习,而不是沉静在焦虑中..
首先是GO的安装
参考csdn上的https://blog.csdn.net/qq_44830881/article/details/123457805
然而在我按照这个完成安装之后我运行hello world vscode进行报错了
[{
"resource": "/D:/goproject/src/chapter-1/main.go",
"owner": "_generated_diagnostic_collection_name_#0",
"severity": 8,
"message": "gopls was not able to find modules in your workspace.\nWhen outside of GOPATH, gopls needs to know which modules you are working on.\nYou can fix this by opening your workspace to a folder inside a Go module, or\nby using a go.work file to specify multiple modules.\nSee the documentation for more information on setting up your workspace:\nhttps://github.com/golang/tools/blob/master/gopls/doc/workspace.md.",
"source": "go list",
"startLineNumber": 1,
"startColumn": 1,
"endLineNumber": 1,
"endColumn": 13
}]
在这个报错中指出:
当您在使用 Go 语言服务器 (gopls) 时遇到 "gopls 无法在您的工作区中找到模块" 的错误消息时,这意味着 gopls 在您的项目工作区找不到任何模块。
刚开始以为是有些模块我未引入,后来发现我只使用了Println 这是一个内置模块是不需要在go.work中进行写入的。
在终端中进行go run
User
go: cannot determine module path for source directory D:\goproject\src\chapter-1 (outside GOPATH, module path must be specified)
Example usage:
'go mod init example.com/m' to initialize a v0 or v1 module
'go mod init example.com/m/v2' to initialize a v2 module
Run 'go help mod init' for more information.
这个错误提示是由于在Go语言的工作区(GOPATH)之外的目录下,没有找到有效的模块路径。
解决此问题的方法是通过以下步骤之一来初始化一个Go模块:
这个错误提示是由于在Go语言的工作区(GOPATH)之外的目录下,没有找到有效的模块路径。
解决此问题的方法是通过以下步骤之一来初始化一个Go模块:
- 使用 'go mod init' 命令: 在项目的根目录下,打开终端或命令提示符,并运行以下命令来初始化一个Go模块:
bashCopy code
go mod init example.com/m
这将初始化一个v0或v1版本的模块,并将其路径设置为 'example.com/m'。请确保将 'example.com/m' 替换为您实际的模块路径。
- 指定v2模块: 如果您希望初始化一个v2版本的模块,可以运行以下命令:
bashCopy code
go mod init example.com/m/v2
同样,请确保将 'example.com/m/v2' 替换为您实际的模块路径。
在初始化模块后,您可以继续在项目中编写Go代码,并且gopls应该能够正确地找到和处理您的模块。请确保在Visual Studio Code中重新打开您的项目,以便VSCode能够正确识别Go模块。
这样就可以在vscode中跑我们的go代码了
### hello world
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
GO语言的基础组成有以下几个部分:
- 包声明
- 引入包
- 函数
- 变量
- 语句&表达式
- 注释
结合以上代码来分析一下这几个部分:
- package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包。
- 下一行import “fmt” 告诉Go编译器这个程序需要使用fmt包,fmt包实现了格式化IO的函数。
- 下一行func main()是程序开始执行的函数。main函数是每一个可执行程序所必须包含的,一般来说都是在启动后的第一个执行函数(如果有init()函数会先执行该函数)。
- 下一行 /…/是注释或以//开头的单行注释
- 下一行fmt.Println()可以将字符串输出到控制台,并在最后自动增加换行字符\n
- 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的
go程序的执行:
go run hello.go
还可以使用go build命令来生成二进制文件
{ 不能单独放在一行,不然运行时会产生错误
具体原因:在Go语言中,花括号 {}
不能单独放在一行,这是因为Go语言对于语法的格式化要求相对严格,采用了一种称为"简洁风格"的代码格式约定。在这种风格中,如果将花括号单独放在一行,Go编译器将会报错。
这样的设计有几个原因:
- 强调代码块:Go语言的花括号用于定义代码块,将其与其他语句区分开来,让代码的逻辑结构更加清晰。
- 统一风格:Go语言社区倡导一种统一的代码风格,以增强代码的可读性和可维护性。通过统一规定花括号的位置,减少了团队成员之间在代码风格上的争议。
- 减少错误:将花括号与代码写在一行中可以避免由于多余的换行符导致的错误。Go语言的设计目标之一是尽量减少不必要的语法错误,使得代码更加可靠。
Go语言对于代码格式化和规范非常注重,可以使用 go fmt
命令自动格式化代码,保证代码风格的一致性,让代码更加易读易懂。