首页 > 其他分享 >Go语言

Go语言

时间:2023-08-03 22:02:26浏览次数:35  
标签:语言 代码 go init 模块 Go com

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模块:

  1. 使用 'go mod init' 命令: 在项目的根目录下,打开终端或命令提示符,并运行以下命令来初始化一个Go模块:
bashCopy code
 go mod init example.com/m

这将初始化一个v0或v1版本的模块,并将其路径设置为 'example.com/m'。请确保将 'example.com/m' 替换为您实际的模块路径。

  1. 指定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语言的基础组成有以下几个部分:

  1. 包声明
  2. 引入包
  3. 函数
  4. 变量
  5. 语句&表达式
  6. 注释

结合以上代码来分析一下这几个部分:

  1. package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包。
  2. 下一行import “fmt” 告诉Go编译器这个程序需要使用fmt包,fmt包实现了格式化IO的函数。
  3. 下一行func main()是程序开始执行的函数。main函数是每一个可执行程序所必须包含的,一般来说都是在启动后的第一个执行函数(如果有init()函数会先执行该函数)。
  4. 下一行 //是注释或以//开头的单行注释
  5. 下一行fmt.Println()可以将字符串输出到控制台,并在最后自动增加换行字符\n
  6. 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的

go程序的执行:

go run hello.go

还可以使用go build命令来生成二进制文件

{ 不能单独放在一行,不然运行时会产生错误

具体原因:在Go语言中,花括号 {} 不能单独放在一行,这是因为Go语言对于语法的格式化要求相对严格,采用了一种称为"简洁风格"的代码格式约定。在这种风格中,如果将花括号单独放在一行,Go编译器将会报错。

这样的设计有几个原因:

  1. 强调代码块:Go语言的花括号用于定义代码块,将其与其他语句区分开来,让代码的逻辑结构更加清晰。
  2. 统一风格:Go语言社区倡导一种统一的代码风格,以增强代码的可读性和可维护性。通过统一规定花括号的位置,减少了团队成员之间在代码风格上的争议。
  3. 减少错误:将花括号与代码写在一行中可以避免由于多余的换行符导致的错误。Go语言的设计目标之一是尽量减少不必要的语法错误,使得代码更加可靠。

Go语言对于代码格式化和规范非常注重,可以使用 go fmt 命令自动格式化代码,保证代码风格的一致性,让代码更加易读易懂。


标签:语言,代码,go,init,模块,Go,com
From: https://blog.51cto.com/Siri/6953679

相关文章

  • 使用 Habana Gaudi2 加速视觉语言模型 BridgeTower
    在对最先进的视觉语言模型BridgeTower进行微调时,使用OptimumHabanav1.6,HabanaGaudi2可以达到近3倍于A100的速度。硬件加速的数据加载以及fastDDP这两个新特性对性能提高贡献最大。这些技术适用于任何性能瓶颈在数据加载上的其他工作负载,很多视觉模型的性能瓶颈在......
  • websocke在django中使用
    目录一、websocket介绍:二、后端1.安装(基于django3.x)2.settings配置3.修改asgi文件(默认不支持websocket,只支持http)一、websocket介绍:channels4.0之后默认不带Daphne服务器了。解决方案可以有两种:1.指定channels的版本为3.x;2.安装时使用pip3install-Uchannels[“dap......
  • 深入理解GOT表覆写技术——[email protected] 理解该题目就明白了
    深入理解GOT表覆写技术 0x00:前言玩pwn的时候,有时要用到got表覆写技术,本文在于分享对GOT表覆写技术的理解,铺垫性的基础知识较多,目的在于让初学者知其然,还要知其所以然! 0x01:ELF文件生成过程//hello.c#include<stdio.h>intmain(){printf("HelloWorld!n");return0;}......
  • MongoDB
    MongoDB简介对于社交类软件的功能特点:数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态内容地理位置的查询……针对以上特点,我们来分析一下:mysql:关系型数据库(效率低)redis:redis缓存(微博,效率高,数据格式不丰富)对于数据量大而言......
  • Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型
    最近在golang业务开发时,遇到一个坑。我们有个服务,会接收通用的interface对象,然后去给用户发消息。因此会涉及到把各个业务方传递过来的字符串,转成interface对象。但是因为我的字符串里有一个数字,比如下面demo里的{"number":1234567},而且数字是7位数,在经过json.Unmarshal后,被转成......
  • C语言
    C语言基础语法1.程序语言的基本构成要素:自然语言程序设计语言字数字,字母,运算符,分隔符词/词组关键字,标识符,常量句子/段落语句篇章程序1.关键字:也称保留字(ReservedWord),是C语言预先定义的、具有特殊意义的单词2.标识符:是大小写字母,数字和下划......
  • C语言 | extern关键字
    extern是C语言中的关键字,它会声明一个全局变量或者函数,表明变量或者函数是定义在其他其他文件中的。​ 定义:表示创建变量或分配存储单元。​ 声明:说明变量的性质,但并不分配存储单元。externinti; //只是声明,但没有分配内存空间给变量iinti; //是定义,给变量i分配了4......
  • VScode 中golang 基准测试 go test -bench .
    目的:基准测试的主要目的是比较不同实现方式之间的性能差异,找出性能瓶颈。1准备以_test.go结尾文件和导入testing包在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。基准测试可以测试一段程序的运行性能及耗费CPU的程度,获得代码内存占用和运行效率的性能数据。G......
  • 在 Google Analytics(GA4)中修改和创建事件
    更改现有事件以及基于现有事件创建新事件(无需更新网站或应用)本文介绍了如何在GoogleAnalytics(分析)中修改和创建事件。在GoogleAnalytics(分析)中创建或修改的所有事件均基于现有的网站或应用事件。为何在GoogleAnalytics(分析)中修改和创建事件通过在GoogleAnalytics(分析)中修改......
  • 我的第九次C语言练习
    今天终于学完了弟三章,实际上昨天没剩下多少了,今天主要是在写练习。//intmain(void)//{// inta;// unsignedintb;// a=12;// b='\012';// printf("a=%d,b=%u",a,b);// return0;//}首先试了下unsignedint和正常int的不同,因为书上在打印\012时答案上只显示了unsig......