Go语言的学习【2】基础语法

2023-11-16

代码组成部分

Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。

在 Go 程序中,一行代表一个语句结束。

如果你打算将多个语句写在同一行,它们则必须使用" ; "人为区分。

标识符和C语言的定义一样。

字符串

Go 语言的字符串连接可以通过 + 实现

package main
import "fmt"
func main() {
    fmt.Println("Google" + "Runoob")
}

在 Go 语言中,空格通常用于分隔标识符、关键字、运算符和表达式,以提高代码的可读性。

Go 语言中变量的声明必须使用空格隔开。

在关键字和表达式之间要使用空格。

在函数调用时,函数名和左边等号之间要使用空格,参数之间也要使用空格。
例如:

result := add(2, 3)

格式化字符

Go 语言中使用 fmt.Sprintf 或 fmt.Printf 格式化字符串并赋值给新串:

  • Sprintf 根据格式化参数生成格式化的字符串并返回该字符串。
  • Printf 根据格式化参数生成格式化的字符串并写入标准输出。
    举例:
package main

import (
    "fmt"
)

func main() {
   // %d 表示整型数字,%s 表示字符串
    var stockcode=123
    var enddate="2020-12-31"
    var url="Code=%d&endDate=%s"
    var target_url=fmt.Sprintf(url,stockcode,enddate)
    fmt.Println(target_url)
}
package main

import (
    "fmt"
)

func main() {
   // %d 表示整型数字,%s 表示字符串
    var stockcode=123
    var enddate="2020-12-31"
    var url="Code=%d&endDate=%s"
    fmt.Printf(url,stockcode,enddate)
}

数据类型

数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

没列举的都可以按照C语言或python的数据类型去理解。
在这里插入图片描述

变量

变量可以通过变量名访问。

Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。

声明变量的一般形式是使用 var 关键字,可以一次声明多个变量。

var 变量名 类型

例如:

package main
import "fmt"
func main() {
    var a string = "Runoob"
    fmt.Println(a)

    var b, c int = 1, 2
    fmt.Println(b, c)
}

https://www.runoob.com/go/go-variables.html

变量声明

第一种,指定变量类型,如果没有初始化,则变量默认为零值。零值就是变量没有做初始化时系统默认设置的值。

第二种,根据值自行判定变量类型。

第三种,如果变量已经使用 var 声明过了,再使用 := 声明变量,就产生编译错误,格式:

package main
import "fmt"
func main() {

    // 声明一个变量并初始化
    var a = "RUNOOB"
    fmt.Println(a)

    // 没有初始化就为零值
    var b int
    fmt.Println(b)

    // bool 零值为 false
    var c bool
    fmt.Println(c)
}

在这里插入图片描述

数值类型(包括complex64/128)为 0

布尔类型为 false

字符串为 “”(空字符串)

intVal := 1 相等于:

var intVal int 
intVal =1 

再举个例子:
可以将 var f string = “Runoob” 简写为 f := “Runoob”:

package main

import "fmt"

func main() {
	var i int
	var f float64
	var b bool
	var s string
	fmt.Printf("%v %v %v %q\n", i, f, b, s)
}

在这里插入图片描述

package main

import "fmt"

func main() {
	var d = true
	fmt.Println(d)
}

在这里插入图片描述

package main

import "fmt"

func main() {
	f := "Runoob" // var f string = "Runoob"

	fmt.Println(f)
}

在这里插入图片描述

多变量声明

语法实例(不能运行的)

//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要显示声明类型,自动推断

vname1, vname2, vname3 := v1, v2, v3 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误


// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

可运行的代码:

package main
import "fmt"

var x, y int
var (  // 这种因式分解关键字的写法一般用于声明全局变量
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    println(x, y, a, b, c, d, e, f, g, h)
}

在这里插入图片描述

值类型和引用类型

参考C语言的指针。

遇到的问题及解决办法

1

[{
“resource”: “/d:/coding2022/Go_1/test.go”,
“owner”: “generated_diagnostic_collection_name#1”,
“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
}]
https://blog.csdn.net/wsi__/article/details/127348785

关于vscode中出现gopls was not able to find modules in your workspace报错的解决方案

https://blog.donstpast.cn/index.php/archives/123/

在Go的安装目录就可以。因为有go.mod文件。
在这里插入图片描述
好吧,我该学一学VScode怎么配置不冲突的工作区了
https://blog.csdn.net/weixin_39775872/article/details/111133360

https://www.yii666.com/blog/226898.html

用户设置与工作空间设置
VS Code提供了两种设置方式:

  • 用户设置: 这种方式进行的设置,会应用于该用户打开的所有工程;
  • 工作空间设置:工作空间是指使用VS Code打开的某个文件夹,在该文件夹下会创建一个名为.vscode的隐藏文件夹,里面包含着仅适用于当前目录的VS Code的设置,工作空间的设置会覆盖用户的设置。

每个人都有自己的偏好,在使用VS Code进行开发时,都会根据自己的习惯来对VS Code进行用户级别的配置。
但是当多人共同完成某个项目的时候,该项目会有一定的编码规范,如: 编辑某个语言时的设置,代码的缩进等等,这个时候就需要对该项目进行单独的工作空间级别的设置。

更改默认用户设置与工作空间设置
VS Code的设置文件为setting.json。用户设置的文件保存在如下目录:

-Windows%APPDATA%CodeUsersettings.json

-Linux$HOME/.config/Code/User/settings.json

工作空间设置的文件保存在当前目录的.vscode文件夹下。

修改默认设置的两种方式

  • 使用编辑器直接打开setting.json文件进行设置;
  • 点击 VS Code 的文件 > 首选项 > 设置,可以打开设置面板进行设置;

⭐⭐⭐ https://www.swvq.com/article/detail/5238 ⭐⭐⭐

https://www.jianshu.com/p/d69a06c4dd01

https://www.runoob.com/go/go-variables.html

报错1

command-line-arguments
.\1.go:34:8: "fmt" imported and not used

问题原因:
main 包中的不同的文件的代码不能相互调用,其他包可以。所以其实student.go没有被一起编译执行。

问题解决:
用了在线的编辑器 https://goplay.tools/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go语言的学习【2】基础语法 的相关文章

  • 怎么把服务器安装系统还原,云服务器磁盘怎么安装系统还原

    云服务器磁盘怎么安装系统还原 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 如果Windows操作系统弹性云服务器未安装
  • 程序源码分享-STM32的PID实验(含DAC和ADC)

    一 PID 算法原理 在工业应用中 PID 及其衍生算法是应用最广泛的算法之一 是当之无愧的万能算法 如果能够熟练掌握 PID 算法的设计与实现过程 对于一般的研发人员来讲 应该是足够应对一般研发问题了 在我所接触的控制算法当中 PID 控

随机推荐

  • python链接oracle数据库以及数据库的增删改查

    初次使用python链接oracle 所以想记录下我遇到的问题 便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节 1 首先 python链接oracle数据库需要配置好环境 我的相关环境如下 1 python Python 3 6
  • 推荐算法3—基于用户的协同过滤算法

    基于邻域的算法是推荐系统中最基本的算法 该算法分为两大类 一类是基于用户的协同过滤算法 另一类是基于物品的协同过滤算法 1 基础算法 在一个在线个性化推荐系统中 当一个用户A需要个性化推荐时 可以先找到和他有相似兴趣的其他用户 然后把那些用
  • 命令执行漏洞原理和测试

    PHP system exec shell exec passthru popen proc popen等称为高危漏洞 原理 只要程序可以调用系统命令的情况下都可以发生命令执行漏洞 条件 用户能够控制函数输入 存在可以执行代码的危险函数 命
  • Linux基础学习(下)——VMWare+CentOS7

    目录 Linux账号管理 用户组管理 磁盘管理 进程管理 Linux环境安装 三种软件安装方式 扩展 VMware使用 Linux账号管理 Linux系统是一个多用户多任务的分时操作系统 任何一个要使用系统资源的用户 都必须首先向系统管理员
  • linux下错误使用pthread_mutex_lock导致程序奔溃问题分析

    在进行程序开发过程中 错误使用了pthread mutex lock导致程序概率性的奔溃 奔溃时报如下错误 问题分析 本文分析在Linux应用程序中错误使用pthread mutex锁时会概率性触发SIG ABRT信号而导致程序崩溃 库打印
  • QFile类,以及利用QFile进行最基本的text文件打开与保存

    在qt中 操作现存文件的流程 一 QFileDialog 利用这个类可以通过对话框获得文件的目录 QFileDialog getOpenFileName 二 QFile 利用这个类 我们可以打开文件 三 QTextStream 这是一个tx
  • 【C++编程基础】AOJ (C++ Programming II)—2-A-stack

    2 A stack 题目 stack Stack is a container of elements that are inserted and deleted according to LIFO Last In First Out Fo
  • 四段论提问让ChatGPT更懂你心!

    用户故事是描述客户需求的方法 通常记为四段论的格式 角色 功能 目的 验收标准 如 作为一个家庭主妇 我需要一个30平方米的餐厅 用以招待10位客人聚餐 我希望这个餐厅 1 四四方方 2 距离厨房不超过10步 3 光线充足 白天可以不开灯打
  • luajit笔记---编译成静态库以及FFI绑定宿主程序函数

    luajit笔记 编译成静态库以及FFI绑定宿主程序函数 发表于2016 3 31 9 23 19 219人阅读 分类 Lua local ffi require ffi ffi cdef typedef struct uint8 t id
  • 两个JSON合并一个JSON

    因为用artTemplate 一个script只能嵌入一条json 多条JOSN给多个script 数据共通又不理想所有就拼吧 虽然看起来都是json格式 String就是String json对象 function JSONcompose
  • 异常点检测算法工具库(pyod)介绍+代码

    异常点检测算法工具库 pyod 一 PyOD介绍 二 PyOD主要亮点 三 工具库相关重要信息汇总 四 作者介绍 五 API介绍与实例 API References Examples 六 代码及效果图 6 1 代码 6 2 效果图 项目地址
  • 《人工智能导论》期末项目 - 基于CNN的花卉识别系统

    目录 一 需求和用例分析 需求分析 用例分析 二 设计和实现 设计 实现 三 数据收集 四 项目技术 对于CNN深度学习算法的解析 五 结果评估方法 1 定性评估 2 定量评估 3 统计分析方法 六 参考文献 花卉系统项目演示 1 通过tr
  • 半波整流、全波整流电路#集成运算放大器

    半波整流 全波整流电路 集成运算放大器
  • 一零六八、回顾MySQL关键字排序

    一 关键字书写顺序 select distinct from join on where group by having union all order by limit 二 关键字实际执行顺序 from on join where gro
  • 详解Spring Bean的生命周期

    Spring Bean的生命周期是Spring面试热点问题 这个问题即考察对Spring的微观了解 又考察对Spring的宏观认识 想要答好并不容易 本文希望能够从源码角度入手 帮助面试者彻底搞定Spring Bean的生命周期 只有四个
  • 通过一张照片来定位拍摄地点和网站的域名 LA CTF 2023

    简介 这次打ctf遇到了一个比较经典的osint类题目 在这里分享一下如何做此类题目 题目链接 https platform lac tf challs 题目简介 你能猜出这个猫天堂的名字吗 答案是此位置的网站域 例如 如果答案是 ucla
  • 从编译器角度分析C语言中数组名和指针的区别

    数组名和指针是两个往往很容易让人们混淆的概念 很多人以为数组名就是一个指针 也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变 例如你可以写出下面这样的代码 int p p 却不能写这样的代码 int a a 那么数组名跟
  • Ubuntu下GCC引用mysql头文件和库文件

    http blog csdn net fjssharpsword article details 6942812 1 安装mysql server sudo apt get install mysql server 5 1 2 gcc连接m
  • 小程序嵌套h5界面,在h5界面调用小程序的扫一扫功能(自用方法3)

    前言 因为小程序对项目要求比较多 我们经常会使用webview嵌套H5界面来 然后在H5界面来实现我们的一些功能页面 这里就会遇到一些问题 比如H5界面的微信扫码功能 目录 实现方法的尝试 自用方法3 方法1 在h5界面中 点击调用小程序的
  • Go语言的学习【2】基础语法

    目录 代码组成部分 字符串 格式化字符 数据类型 变量 变量声明 多变量声明 值类型和引用类型 遇到的问题及解决办法 1 报错1 代码组成部分 Go 程序可以由多个标记组成 可以是关键字 标识符 常量 字符串 符号 在 Go 程序中 一行代