第1章:Go语言入门

第1章:Go语言入门

1. Go语言概述

1.1 语言历史

Go语言(Golang)是由Google公司于2007年开始开发,并于2009年正式开源的编程语言。其主要创始人包括:

  • Rob Pike(Unix和Plan 9操作系统的创始人之一)
  • Ken Thompson(Unix操作系统和C语言的联合发明人)
  • Robert Griesemer(V8 JavaScript引擎的设计者)

1.2 设计理念

Go语言的设计初衷是解决当时软件开发中的一些痛点:

  1. 简化复杂的软件开发过程
  2. 提高多核和网络系统编程的效率
  3. 保持语言的简单性和可读性
  4. 支持高效的并发编程

1.3 Go语言的优势

  1. 简单易学

    • 语法简洁,学习曲线平缓
    • 关键字少,语言规范小
  2. 高性能

    • 编译速度快
    • 执行效率接近C语言
    • 垃圾回收机制先进
  3. 并发编程

    • 原生支持并发(goroutine)
    • 轻量级线程模型
    • 通道(Channel)机制简化并发通信
  4. 强大的标准库

    • 丰富的内置包
    • 网络编程支持
    • 跨平台开发

1.4 应用场景

  1. 云计算和分布式系统

    • Kubernetes
    • Docker
    • Etcd
  2. 网络编程

    • 高性能Web服务器
    • 微服务架构
    • 网络爬虫
  3. 系统编程

    • 命令行工具
    • 后台服务
    • 性能监控工具
  4. 区块链和加密货币

    • Ethereum
    • Hyperledger项目

2. 开发环境搭建

2.1 Go SDK安装

Windows安装步骤
  1. 下载Go安装包
# 访问官方网站下载
https://golang.org/dl/
  1. 运行安装程序,选择安装路径(推荐:C:\Go)

  2. 配置环境变量

    • 添加 C:\Go\bin 到系统PATH
    • 设置 GOROOTC:\Go
    • 设置 GOPATH(项目工作空间)
  3. 验证安装

# 打开命令提示符
go version
go env

2.2 开发工具配置

VSCode配置
  1. 安装VSCode

  2. 安装Go扩展

    • 打开扩展市场
    • 搜索"Go"
    • 安装官方Go扩展
  3. 安装Go工具

# VSCode中打开终端,执行
go install golang.org/x/tools/gopls@latest
go install github.com/go-delve/delve/cmd/dlv@latest
go install github.com/stamblerre/gocode@latest
GoLand配置
  1. 下载并安装GoLand
  2. 配置Go SDK
    • 打开设置
    • 选择Go安装目录
    • 配置GOPATH

3. 第一个Go程序

3.1 Hello World示例

// main.go
package main  // 声明包名import "fmt"  // 导入fmt包用于打印// main函数是程序入口
func main() {fmt.Println("Hello, Go语言!")
}

3.2 程序结构解析

  1. package main:声明程序的包名

    • main包是可执行程序的入口
    • 每个Go程序必须有一个main包
  2. import "fmt":导入标准库包

    • fmt用于格式化输入输出
    • 可以导入多个包
  3. func main():主函数

    • 程序执行的起点
    • 必须在main包中
    • 没有参数,没有返回值

3.3 编译和运行

方法1:直接运行
# 在程序目录下
go run main.go
方法2:编译可执行文件
# 编译
go build main.go# 运行(Windows)
main.exe# 运行(Linux/macOS)
./main

3.4 常见命令

# 格式化代码
go fmt main.go# 检查代码
go vet main.go# 安装依赖
go mod tidy

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

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

相关文章

Linux 系统安装 NCBI Blast + A Quick Guide

前言 NCBI BLAST(Basic Local Alignment Search Tool)是由美国国家生物技术信息中心(NCBI)开发的一个深受生物信息学研究者青睐的基因序列比对工具。作为生物序列信息比对的行业标准,BLAST可用于分析核酸(…

嵌入式科普(26)为什么heap通常8字节对齐

目录 一、概述 二、newlibc heap 2.1 stm32cubeide .ld heap 2.2 e2studio .ld heap 三、glibc源码 3.1 Ubuntu c heap 四、总结 一、概述 结论:在嵌入式c语言中,heap通常8字节对齐 本文主要分析这个问题的分析过程 二、newlibc heap newlibc…

JVM调优,参数在哪里设置的?

JVM调优,参数在哪里设置的? 在Java应用程序中,JVM(Java Virtual Machine)的调优通常通过设置JVM启动参数来实现。这些参数可以控制JVM的内存分配、垃圾回收策略、线程管理、性能优化等方面。 1. JVM参数的位置 JVM参…

nginx学习之路-nginx配置https服务器

文章目录 1. 生成证书2. 配置证书1. 拷贝证书文件2. 修改conf/nginx.conf文件内容 3. 查看效果1. 重载配置2. 访问 1. 生成证书 在linux系统下执行,使用openssl命令。(windows环境也可以使用cmder) # 1. 生成私钥 server2025.key(无密码保护…

VulnHub—potato-suncs

使用命令扫描靶机ip arp-scan -l 尝试访问一下ip 发现一个大土豆没什么用 尝试扫描一下子域名 没有发现什么有用的信息 尝试扫描端口 namp -A 192.168.19.137 -p- 尝试访问一下端口,发现都访问不进去 查看源代码发现了网页的标题 potato,就想着爆破一下密码 hydr…

【AI部署】腾讯云每月1w小时免费GPU获取

一、如何进入活动页面 进入腾讯云官网,点击控制台: https://curl.qcloud.com/zl1rLuMf 点击工具,进入CloudStudio: 找到高性能工作空间,每月会有1w分钟的免费时长: 二、创建AI模版 点击直接创建 选择…

使用 `llama_index` 构建智能问答系统:多种文档切片方法的评估

使用 llama_index 构建智能问答系统:多种文档切片方法的评估 代码优化与解析1. **代码结构优化**2. **日志管理**3. **环境变量管理**4. **模型初始化**5. **提示模板更新**6. **问答函数优化**7. **索引构建与查询引擎**8. **节点解析器测试** 总结 在现代自然语言…

开源平台Kubernetes的优势是什么?

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的使用范围广泛。 Kubernetes 这个名字源于希腊语,意…

INT305 Machine Learning

W1 Introduction Nearest Neighbor Preliminaries and Nearest Neighbor Methods • Suppose we’re given a novel input vector 𝑥 we’d like to classify. • The idea: find the nearest input vector to 𝑥 in the training set and copy …

如何存储和分析爬取的数据

在数据爬取过程中,存储和分析数据是至关重要的环节。正确的存储方式可以确保数据的安全性和可访问性,而有效的数据分析则可以提取出有价值的信息。以下是关于如何存储和分析爬取数据的详细介绍,包括具体的代码示例。 数据存储 存储爬取的数…

2025_0105_生活记录

3号去内蒙看了流星雨。还记得上次看流星的时间是2018年,也是冬天,大家在雁栖湖校区的操场上仰望星空。那个时候幸运的看到了一颗流星,便迅速地在心里许愿。这次看到了三颗流星,我也许了愿,希望实现。 24年走过了十多个…

Docker安装Prometheus和Grafana

概念简述 安装prometheus 第一步:确保安装有docker 第二步:拉取镜像 第三步:准备相关挂载目录及文件 第四步:启动容器 第五步:访问测试 安装grafana 第一步:确保安装有docker 第二步:拉…

详解GPT-信息抽取任务 (GPT-3 FAMILY LARGE LANGUAGE MODELS)

GPT-3 FAMILY LARGE LANGUAGE MODELS Information Extraction 自然语言处理信息提取任务(NLP-IE):从非结构化文本数据中提取结构化数据,例如提取实体、关系和事件 [164]。将非结构化文本数据转换为结构化数据可以实现高效的数据处…

通过blob请求后端导出文件

后端controller PostMapping("/exportPlanProject2")public void exportActive(RequestBody USER user, HttpServletResponse httpServletResponse) throws IOException {}后端service public void exportExcel2(HttpServletResponse response) throws IOException {…

【跨域】解决SpringBoot和openresty跨域问题

平时后端只需要写一个配置类就可以解决跨域但是最近的新项目死活不行 先说结论 项目中的权限校验(也可以是其他的)拦截器优先级高于跨域拦截器导致跨域处理失效 解决办法 1.在addCorsMappings上增加 Order(value -100)// 跨域优先级最高 2.nginx放行OPTIONS请求 SpringBo…

数据结构9.3 - 文件基础(C++)

目录 1 打开文件字符读写关闭文件 上图源自&#xff1a;https://blog.csdn.net/LG1259156776/article/details/47035583 1 打开文件 法 1法 2ofstream file(path);ofstream file;file.open(path); #include<bits/stdc.h> using namespace std;int main() {char path[]…

k8s基础(3)—Kubernetes-Deployment

一、 Deployment概述 ‌ Kubernetes Deployment‌是Kubernetes中的一个核心概念&#xff0c;它是一种高级别的控制器&#xff0c;用于管理Pod和ReplicaSet&#xff0c;确保应用程序的高可用性和稳定性。Deployment通过声明式配置来创建和更新Pod和ReplicaSet&#xff0c;从而…

JS获取URL中参数值的4种方法

方法1&#xff1a;现代浏览器都支持 URL 和 URLSearchParams 对象&#xff0c;可以很方便地从URL中提取参数 // 假设当前URL为 "https://example.com/?nameJohn&age30" const url new URL(window.location.href); // 或者你可以直接传入一个URL字符串 const n…

ubuntu开启root用户

Ubuntu 启用 root 账户 在 Ubuntu 中&#xff0c;默认情况下 root 账户是被禁用的。为了启用 root 账户&#xff0c;你需要设置 root 用户的密码。以下是如何在 Ubuntu 上启用 root 账户的步骤&#xff1a; 打开终端。 输入以下命令来设置 root 用户的密码&#xff1a; sud…

C#跨窗口传递Halcon图像/参数

Demo目的&#xff0c;图像同步到附属窗口&#xff0c;通过附属窗口各类操作&#xff08;参数设置&#xff0c;ROI重置等&#xff09;简化主界面 本文主要演示图像传递 主界面 附属界面 运行效果 主界面代码 using System; using System.Collections.Generic; using System.C…