第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…

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模版 点击直接创建 选择…

开源平台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]。将非结构化文本数据转换为结构化数据可以实现高效的数据处…

数据结构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;从而…

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

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

LeetCode:700.二叉搜索树中的搜索

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;700.二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你…

美食烹饪互动平台

本文结尾处获取源码。 一、相关技术 后端&#xff1a;Java、JavaWeb / Springboot。前端&#xff1a;Vue、HTML / CSS / Javascript 等。数据库&#xff1a;MySQL 二、相关软件&#xff08;列出的软件其一均可运行&#xff09; IDEAEclipseVisual Studio Code(VScode)Navica…

单片机从入门到放弃教程001

1. 单片机介绍 单片微型计算机(Single Chip Microcomputer)简称单片机&#xff0c;是典型的嵌入式微处理器(Micro Controller Unit简称MCU)&#xff0c;是一种将中央处理器&#xff08;CPU&#xff09;、内存、输入输出接口以及其他功能模块集成在单一芯片上的微型计算机。 1…

Mysql数据实时同步到Es上

同步方案 ① 同步双写 同步双写实一种数据同步策略&#xff0c;它指的是在主数据库(如mysql) 上进行数据修改操作&#xff0c;同时将这些修改同步写入到ES 中&#xff0c;这种策略旨在确保两个数据库之间的数据一致性&#xff0c;并且优化系统的读写性能。 目标 同步双写是…

供需平台信息发布付费查看小程序系统开发方案

供需平台信息发布付费查看小程序系统主要是为了满足个人及企业用户的供需信息发布与匹配需求。 一、目标用户群体 个人用户&#xff1a;寻找兼职工作、二手物品交换、本地服务&#xff08;如家政、维修&#xff09;等。 小微企业&#xff1a;推广产品和服务&#xff0c;寻找合…

深入理解计算机系统—虚拟内存(3)

9.9 动态内存分配 虽然可以使用低级的 mmap 和 munmap 函数来创建和删除虚拟内存的区域&#xff0c;但是 C程序员还是会觉得当运行时需要额外虚拟内存时&#xff0c;用 动态内存分配器 更方便&#xff0c;也有更好的可移植性。 动态内存分配器维护着一个进程的虚拟内存区域&…

html本地字符串处理工具|去重、分割、求交集、求并集

源代码&#xff08;保存到本地文件命名为 xxx.html&#xff0c;用浏览器打开该文件即可使用&#xff09; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>数据处理</title><style>inpu…