Go语言的学习【1】基础语法之前的准备事项

news2024/11/24 4:31:11

目录

  • 什么是云原生
  • 学习方法
  • go语言的IDE配置之VScode
  • 写go代码要注意的事情
  • 一些基本命令
  • 基础语法
    • Go 语言原生自带测试
    • Go vet
      • Print-format 错误,检查类型不匹配的print
      • Boolean 错误,检查一直为 true、false 或者冗余的表达式
      • Range 循环,比如如下代码主协程会先退出,go routine无法被执行
      • Unreachable的代码,如 return 之后的代码
      • 其他错误,比如变量自赋值,error 检查滞后等
    • 代码版本控制
    • fmt.Println(...) 和fmt.Print()

什么是云原生

在包括公有云、私有云、混合云等动态环境中构建和运行规模化应用的能力。

• 云原生是一种思想,是技术、企业管理方法的集合。
• 技术层面
• 应用程序从设计之初就为在云上运行而做好准备。
• 云平台基于自动化体系。
• 流程层面
• 基于 DevOps, CI/CD

基于多种手段
• 应用容器化封装;
• 服务网格;
• 不可变基础架构;
• 声明式 API。

云原生的意义
• 提升系统的适应性、可管理性、可观察性;
• 使工程师能以最小成本进行频繁和可预测的系统变更。
• 提升速度和效率,助力业务成长,缩短 I2M(Idea to Market)

在这里插入图片描述
在这里插入图片描述

学习方法

在这里插入图片描述

go语言的IDE配置之VScode

没用goland是因为我暂时没钱+暂时不想用盗版+暂时不想给电脑加几个G的存储消耗+我同时也在用vscode做Rust的语言学习。

这里网上教程很多,我就不一一列举了。这里推荐一个【Golang】VsCode下开发Go语言的环境配置(超详细图文详解)

完美解决了我vscode运行代码的麻烦。

在这里插入图片描述

在这里插入图片描述

写go代码要注意的事情

  • 必须在源文件中非注释的第一行指明这个文件属于哪个包。【package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。】
  • fmt 包实现了格式化 IO(输入/输出)的函数
  • func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
  • // 是注释 以 // 开头的单行注释;多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段
  • 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )
  • Go 语言不支持动态链接,因此编译时会将所有依赖编译进同一个二进制文件

一些基本命令

bug

start a bug report

build

compile packages and dependencies

clean

remove object files and cached files

doc

show documentation for package or symbol

env

print Go environment information

fix

update packages to use new APIs

fmt

gofmt (reformat) package sources

generate

generate Go files by processing source

get

add dependencies to current module and install them

install

compile and install packages and dependencies

list

list packages or modules

mod

module maintenance

run

compile and run Go program

test

test packages

tool

run specified go tool

version

print Go version

vet

report likely mistakes in packages

指定输出目录。
go build –o bin/mybinary .
常用环境变量设置编译操作系统和 CPU 架构。
GOOS=linux GOARCH=amd64 go build
全支持列表。

 $GOROOT/src/go/build/syslist.go

基础语法

这里推荐菜鸟教程。

Go 语言原生自带测试

import "testing"
func TestIncrease(t *testing.T) {
t.Log("Start testing")
increase(1, 2)
}

go test ./… -v 运行测试

go test 命令扫描所有*_test.go为结尾的文件,惯例是将测试代码与正式代码放在同目录
如 foo.go 的测试代码一般写在 foo_test.go

Go vet

代码静态检查,发现可能的 bug 或者可疑的构造。

Print-format 错误,检查类型不匹配的print

str := “hello world!”
fmt.Printf("%d\n", str)

Boolean 错误,检查一直为 true、false 或者冗余的表达式

fmt.Println(i != 0 || i != 1)

Range 循环,比如如下代码主协程会先退出,go routine无法被执行

words := []string{"foo", "bar", "baz"} 
for _, word := range words {
go func() {
	fmt.Println(word). 
	}()
}

Unreachable的代码,如 return 之后的代码

其他错误,比如变量自赋值,error 检查滞后等

res, err := http.Get("https://www.spreadsheetdb.io/") 
defer res.Body.Close() 
if err != nil {
	log.Fatal(err)
}

代码版本控制

fmt.Println(…) 和fmt.Print()

可以将字符串输出到控制台,并在最后自动增加换行字符 \n。

Print 和 Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/540330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ThingsBoard部署tb-gateway并配置OPCUA

1、安装 我实在自己的虚拟机上安装,使用官方Docker的安装方式 docker run -it -v ~/.tb-gateway/logs:/thingsboard_gateway/logs -v ~/.tb-gateway/extensions:/thingsboard_gateway/extensions -v ~/.tb-gateway/config:/thingsboard_gateway/config --name tb-gateway --…

《安富莱嵌入式周报》第312期:开源磁场照相机,仿生神经元PCB,开源无线耳机,手机系统PalmOS移植到各种单片机,开放系统组装协议OSAP

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程: BSP视频教程第26期:CAN/CANFD/CANopen专题,CANFD整个运行机制精…

PyTorch RNN的原理及其手写复现。

PyTorch RNN的原理及其手写复现。 记忆单元(考虑过去的信息)分类包括:1.RNN 2.GRU 3.LSTM模型类别:1.单向循环(左到右) 2.双向循环(考虑未来信息) 3.多层单向或双向循环优缺点应用场景具体公式 代码实现 记忆单元(考虑过去的信息)…

网络安全合规-数据安全评估

目前,我国在数据管理领域,已经正式出台的国家标准有《数据管理能力成熟度评估模型(GB/T 36073-2018)》(DCMM),在数据安全检测评估、认证领域的标准有《数据安全能力成熟度模型(GB/T …

实现取关和关注功能

将关注过的用户id存如数据库中 //关注或者取关 Override public Result follow(Long id, Boolean flag) { //1.获取当前登录用户的id UserDTO user UserHolder.getUser(); if(usernull){ return Result.fail("请先登录"); } Long userId user.getId(); //2.判断是关…

vue3+antDesignVue前端纯导出

效果 <a-buttonsize"default"style"margin-left: 10px"click"exportData">导出</a-button>1.下载所需依赖 npm install xlsx --save npm install file-saver --save<script setup> import { reactive, ref } from "vue…

SpringBoot——多环境开发

简单介绍&#xff1a; 在我们的开发过程中&#xff0c;我们的程序开发分为几个基本的阶段&#xff0c;比如开发阶段&#xff0c;调试阶段&#xff0c;运行阶段&#xff0c;在不同的阶段可能需要有不同的配置文件去对我们的项目做配置&#xff0c;那么要如何在不同的环境中配置…

C语言:数组定义方式

一、数组简介 <1>前言 大家首先来思考一个问题&#xff0c;若是我们想要定义两个变量&#xff0c;求这两个数的平均数&#xff0c;该怎么求呢&#xff1f; 例如&#xff1a;int a 10,b 20 int average (a b) / 2; 上面的公式&#xff0c;我相信大家应该很快就能够求出…

牛奶蛋白过敏VS乳糖不耐受,看完这篇终于分清了

乳糖不耐受 乳糖不耐症的主要表现为一些胃肠道症状&#xff0c;有腹部紧张、肠鸣、腹痛、排气和腹泻等症状。如出现这些症状都是乳糖不耐受症的表现之一&#xff0c;但患有乳糖不耐的个体症状差异很大&#xff0c;而严重的乳糖不耐受多于摄入一定量乳糖后30min至数小时内发生。…

Python安装教程2023(小白专用)已验证

第一次接触Python&#xff1f;下面从一个完全不懂的Python 的小白来安装Python 等一系列工作的记录&#xff0c;并且遇到的问题也会写出&#xff0c;让完全不懂的小白也可上手安装&#xff0c;并且完成第一个Hello world代码。 [Python 安装] 目前&#xff0c;Python有两个版本…

【手机建站】Android Termux+cpolar内网穿透,搭建外网可以访问的网站

文章目录 概述1.搭建apache2.安装cpolar内网穿透3.公网访问配置4.固定公网地址5.添加站点 概述 Termux是一个Android终端仿真应用程序&#xff0c;用于在 Android 手机上搭建一个完整的Linux 环境&#xff0c;能够实现Linux下的许多基本操作&#xff0c;不需要root权限Termux就…

Word怎么转换成PDF免费?分享适合你的Word转PDF方法

随着数字化时代的到来&#xff0c;将文件转换为PDF格式已经成为一个常见的需求。PDF文件格式的广泛应用使其在各个领域都非常重要&#xff0c;而Word文档则是最常见的文件类型之一。因此&#xff0c;将Word转换为PDF的方法备受关注。在下面&#xff0c;我将分享一种适合任何人使…

基于ARIMA-CNN-LSTM预测模型研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

大数据服务之linux中安装hadoop

安装hadoop之前&#xff0c;必须要先有jdk。所以jdk 在linux环境中配置java全局变量 第一步&#xff0c;下载 下载地址&#xff1a;Index of /dist/hadoop/common/hadoop-3.1.3 第二步&#xff0c;解压 tar -zxvf hadoop-3.1.3.tar.gz 第三步&#xff0c;获取文件路径 pw…

站的更高一点看分布式系统中的复制

复制意味着在通过网络连接的多台机器上保留相同数据的副本。 我们希望能复制数据&#xff0c;可能出于各种各样的原因&#xff1a; 使得数据与用户在地理上接近&#xff08;从而减少延迟&#xff09;即使系统的一部分出现故障&#xff0c;系统也能继续工作&#xff08;从而提…

网络带宽管理

网络某一部分的带宽使用过多&#xff0c;可能会影响整个网络的性能&#xff0c;带宽问题甚至会影响业务关键型服务并导致网络停机。在企业中保持稳定的网络性能可能具有挑战性&#xff0c;因为采用数字化的网络可扩展性和敏捷性应该与组织的发展同步。随着基础设施的扩展、新应…

flask+p5.js 网页开发 pycharm mac环境

flask 学习参考视频&#xff1a; 2023版-零基础玩转Python Flask框架-学完可就业 一、安装 需要安装的&#xff1a; python、flask、pycharm mysql、Navicat&#xff08;这两个不用数据库可以不用安装&#xff09; 1、python3.0以上安装 下载地址 下载以后终端输入python3 …

Vue入门学习笔记(1)

这里写目录标题 一、安装工具二、前置设置2.1 淘宝加速2.2、华为云加速 三、安装vue工具3.1 安装vue/cli3.2 安装vite 四、创建项目4.1 使用vue/cli创建4.2 使用vite创建 一、安装工具 首先须安装以下工具&#xff1a; vscode&#xff08;如果下载慢的话建议使用360安装&…

select

1. select模型 2. select()函数 int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);fd_set类型 readfds和writefds, exceptfds的类型都是fd_set,那么fd_set类型是什么呢&#xff1f; fd_set类型本质是一个位图&#xff0…

Word怎么生成目录?4个方法快速生成目录!

案例&#xff1a;Word怎么生成目录 【想问下大家在使用Word时是怎么生成目录的呀&#xff1f;正在写毕业论文的我真的很急&#xff01;感谢&#xff01;】 Word作为我们常用的办公软件&#xff0c;为我们的提供了很多便利。生成目录是在Word文档中创建一个方便导航的索引。 …