【Golang开发入门】你会真的会用Go写“Hello world“吗?

news2024/12/23 13:15:57

在这里插入图片描述

  • 博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。
  • 博主主页: @是瑶瑶子啦
  • 所属专栏: Go语言核心编程
  • 近期目标:写好专栏的每一篇文章

在这里插入图片描述

目录

  • 一、Go项目目录结构
  • 二、"hello world"程序——Go实现
  • 三、Go的执行流程
  • 四、Go程序开发注意事项

一、Go项目目录结构

在这里插入图片描述

二、"hello world"程序——Go实现

在项目路径Go-/src/project01/main下创建一个.go文件:hello.go
在这里插入图片描述

go mod init

补充&说明:go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。
go mod命令
常用的go mod命令如下:
go mod download 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit 编辑go.mod文件
go mod graph 打印模块依赖图
go mod init 初始化当前文件夹, 创建go.mod文件
go mod tidy 增加缺少的module,删除无用的module
go mod vendor 将依赖复制到vendor下
go mod verify 校验依赖
go mod why 解释为什么需要依赖

使用go module模式创建新项目go mod init 项目名对项目进行初始化。该命令会在项目根目录下生成go.mod文件。下面我们对project01这个项目进行初始

go mod init project 01

编写第一个Go程序:“hello world”

package main	//说明hello.go这个文件在main这个包中

import "fmt"	//导入内置包,可以使用其中函数等

func main(){
	fmt.Println("Hello World!")
}

🫐代码说明

  • Go的每一个文件都必须归属于一个包,不能独立于包而存在,所以需要在每一个.go文件上声明该文件所属哪一个包: package xxx
  • import module方式,导入内置包,使用其中函数等
  • func,关键字,声明函数
  • main函数是go程序执行的入口

注意,编写完后,需要保存ctrl +s,编辑器已经配置了auto save功能不需要

go build(编译)

该.go文件所在目录,打开终端,使用go build命令,将源代码编译,生成.exe文件

go build

在这里插入图片描述
编译完成之后,可以直接执行

运行.exe

编译好后,可以直接Win+R->cmd调出dos命令行,直接在终端执行可执行文件
在这里插入图片描述

💁🏻‍♂️Tips:
使用go build -o命令,还可以指定有源代码编译后生成的可执行文件的名字!(默认会以该文件所在包为名字)

go build -o hehe.exe hello.go

go run ( 编译+运行)

在项目目录下

go run main.go

本质是在临时目录编译+执行

体现出来类似于执行一个脚本语言
在这里插入图片描述

真正的工作环境中,要先编译再执行

三、Go的执行流程

  • 🥗go build + 执行

    • 执行流程

      • 先将.go源代码文件编译
      • 生成可执行(.exe)文件
      • 执行,生成结果
    • 特点

      • 用户只需要得到可执行文件,在没有Go开发环境的情况下,可以直接运行
  • 🥗go run

    • 执行流程
      • 将.go源代码编译+运行一步到位
      • 得到程序运行结果
    • 特点
      • 看似比较方便,但是如果想在另一个机器上运行程序,必须在机器上安装go的开发环境

四、Go程序开发注意事项

  • go源文件以go为扩展名
  • go程序的入口是main函数
  • 严格区分大小写
  • go的语句后面不需要加分号(编译器会自动给你加)
  • Go编译器是一行一行编译,所以一行语句就写在一行,不要一行写多个语句
  • go语言定义的变量和import的模块,必须要使用,不使用,代码编译不通过
  • 花括号必须成对出现(且花括号不能在一条竖线上,具体请看:

func main(){
	fmt.Println("Hello World!")
}

func main()
{
	fmt.Println("Hello World!")
}

如果对你有帮助还请:点赞+关注+收藏

如果文中有不足还请多多指出

关注我,一起学习Golang!
在这里插入图片描述

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

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

相关文章

Linux下版本控制器(SVN) -命令行客户端

文章目录 进阶知识-Linux下版本控制器(SVN)5、命令行客户端5.1 创建两个工作区目录模拟两个开发人员5.2 检出5.3 添加5.4 提交5.5 查看服务器端文件内容5.6 更新操作5.7 冲突5.7.1 过时的文件5.7.2 冲突的产生5.7.3 冲突的表现5.7.4 冲突的手动解决5.7.5 冲突的半自动解决5.7.6…

ERTEC200P-2 PROFINET设备完全开发手册(10)

10. 固化程序 固件在SPI Flash的结构 由于绝大多数的设计都是使用SPI Flash,因此这里只介绍SPI Flash的烧写。ERTEC200P-2的固件在SPI Flash中的Layout如下图所示: 其中ROM Header:格式如下图所示: Firmware Binary: 协议栈固件…

【TypeScript】TS中type和interface在类型声明时的区别

🐱 个人主页:不叫猫先生 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫优质专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料可以找我免…

RxJava中DISPOSED状态的被观察者任务执行onError/onSuccess导致的崩溃问题

RxJava中写了doOnError但还是导致应用崩溃问题记录 一、问题背景1.1 崩溃堆栈1.2 写demo代码复现相同逻辑 二、问题等价还原-复现2.1 代码位置:io.reactivex.internal.operators.single.SingleCreate.Emitter#onError 三、修复方法3.1 方案一:设置全局的…

springboot +flowable,处理 flowable 的用户和用户组(二)

一.简介 对于flowable是什么以及关于此框架的具体信息可以参看此项目的官方文档:https://www.flowable.org/docs/userguide/index.html Flowable is a light-weight business process engine written in Java.这是官网文档对此框架的完美解释:Flowable…

4·26世界知识产权日,Adobe助力认知和解决知识产权的那些事

2023年是中国与世界知识产权组织(WIPO)合作50周年,在第23个世界知识产权日来临之际(每年4月26日定为世界知识产权日),让我们先来了解一下知识产权的相关知识吧! ①“知识产权”的定义是什么? 知识产权是指…

FVM初启,Filecoin生态爆发着力点在哪?

Filecoin 小高潮 2023年初,Filecoin发文分享了今年的三项重大变更,分别是FVM、数据计算和检索市场的更新,这些更新消息在发布后迅速吸引了市场的广泛关注。 特别是在3月14日,Filecoin正式推出了FVM,这一变革使得File…

对比度亮度调整与通道分离合并

对比度亮度调整与通道分离合并 对比度亮度调整: 1)原理介绍: g’ g * Mult Add ⚫ g 表示原图像像素 ⚫ g’ 表示输出图像像素 ⚫ Mult 被称为增益(gain), 通常用来控制图像的对比度 ⚫ Add 通常被称为偏置(bias), 通常用来控制图像的亮度 g’(i,j) Mult * g(i,j) Add …

九龙证券|两日连涨,猪价或见底!二季度末生猪养殖有望扭亏为盈

猪肉产品质量和价格涨跌备受商场重视。 猪肉指数接连下行 4月20日,A股大盘全天弱势。猪肉指数继续下行,收跌0.65%。成份股中,仅新五丰、温氏股份等上涨,大多个股录得跌落。天域生态跌4.46%,海大集团、禾丰股份跌逾3%。…

Ubuntu 20.04 安装 Latex 并使用 vscode 作为文本编辑器

Ubuntu 20.04 安装 Latex 并使用 vscode 作为文本编辑器 1 Texlive 下载与安装1.1 镜像文件下载1.2 安装步骤1.3 查看是否安装成功1.4 相关依赖安装 2 安装 windows 字体3 vscode 编辑与编译环境配置3.1 vscode 安装3.2 编辑相关插件安装3.3 编译环境配置附录: 因为…

【Redis】Redis持久化

介绍 ​ Redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。Redis提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。 ​ 既然redis的数据可以保存在磁盘上&…

STL : 栈 stack 与 队列 queue

Stack #include<stack> using namespace std; 栈&#xff1a;LIFO&#xff0c;先进后出&#xff1b; 不允许遍历&#xff0c;仅仅一个出口&#xff0c;只有栈顶元素可被访问到。 Member functions NameRoleNotice&#xff08;constructor&#xff09;基本构造函数指…

ChatGLM-6B 中文对话模型复现、调用模块、微调及部署实现(更新中)

ChatGLM-6B-PT 一、前言 近期&#xff0c;清华开源了其中文对话大模型的小参数量版本 ChatGLM-6B&#xff08;GitHub地址&#xff1a;https://github.com/THUDM/ChatGLM-6B&#xff09;。其不仅可以单卡部署在个人电脑上&#xff0c;甚至 INT4 量化还可以最低部署到 6G 显存的…

从零开始写一个 即时通讯程序

即时通信&#xff08;IM&#xff09;是指能够即时发送和接收互联网消息等的业务。自1998年面世以来&#xff0c;特别是近几年的迅速发展&#xff0c;即时通信的功能日益丰富&#xff0c;逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的…

谁说不能用中文写代码?

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 现代计算机和编程的起源和推动力量主要源自美国&#xff0c;再加上26个字母很便于表示&#xff08;算上大小写&#xff0c;6位bit就够了&am…

32岁阿里P7,把简历改成不知名小公司,学历改成普通本科,工作内容不变,投简历全挂!...

hr靠什么来招人&#xff1f; 一位猎头讲述了自己和朋友打赌的故事&#xff1a; 朋友在阿里云&#xff0c;32岁&#xff0c;P7&#xff0c;他把简历上的公司改成不知名&#xff0c;学历改成普通本科&#xff0c;工作内容不变&#xff0c;结果投其他公司&#xff08;比如京东&…

ThinkPHP6之数据库操作下

ThinkPHP6之数据库操作下 前言一&#xff0c;查询表达式1.1 where1.2table和name1.3field1.4limit1.5page1.6 order 二&#xff0c; 聚合查询三&#xff0c;分页查询总结 前言 数据库操作除了增&#xff0c;删&#xff0c;查&#xff0c;改&#xff0c;这四个基本操作外&#x…

【C++】二叉搜索树(概念、实现、应用以及OJ题详解)

前言&#xff1a; 此前我们在C语言实现数据结构的时候学习过二叉树&#xff0c;但是那个时候我们没有深入学习二叉搜索树。本章重提二叉树并详解二叉搜索树有下面两个原因&#xff1a; 1、为我们下一章学习set和map做准备&#xff1b;2、详解我们进阶一点的二叉树的面试OJ题&a…

120名顶级技术专家用GPT-4搞出的脑洞发明大赏

文 | 智商掉了一地 黑客松&#xff08;Hackathon&#xff09;是一种聚集程序员、设计师等技术人才&#xff0c;共同在短短几天的时间内合作进行软件开发、解决问题的活动。参与者可分为个人和团队形式参与&#xff0c;他们将利用这段时间内的集中创作和多学科合作&#xff0c;迅…

Java网络编程系列之NIO

Java网络编程系列之NIO 1.Java NIO概述1.1 阻塞IO1.2 非阻塞IO1.3 NIO概述1.3.1 Channels1.3.2 Buffer1.3.3 Selector 2.Java NIO(Channel)2.1Channel概述2.2 Channel实现2.3 FileChannel 介绍与示例2.4 FileChannel 操作详解2.4.1 打开FileChannel2.4.2 从FileChannel读取数据…