Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序_goland创建go项目-程序员宅基地

技术标签: 猫头虎技术团队  java  100天精通Golang基础入门专栏  golang  go  后端  猫头虎  开发语言  

在这里插入图片描述


博主猫头虎 带您进入 Golang 语言的新世界
博客首页——猫头虎的博客
《面试题大全专栏》 文章图文并茂生动形象简单易学!欢迎大家来踩踩~
《IDEA开发秘籍专栏》 学会IDEA常用操作,工作效率翻倍~
《100天精通Golang(基础入门篇)》 学会Golang语言,畅游云原生领域,无厂不可去~

希望本文能给您带来价值如果有任何不足,欢迎批评指正!


Go 语言 入门

go 语言是什么?

Go语言(又称为Golang)是一种开源的编程语言,由Google开发并于2009年首次亮相。它是一种静态类型、编译型的语言,拥有自动垃圾回收机制和强大的并发编程支持。

Go语言被设计成简洁、易于学习和使用,同时具备高效、可靠和可扩展的特性。它的语法风格类似于C语言,但是去掉了许多C语言中的复杂特性,如指针和内存管理。

Go语言可以用于编写各种类型的应用程序,包括服务器端应用程序、网络应用程序、云平台应用程序、操作系统和系统工具等。它也被广泛用于大型互联网公司和其他组织的内部开发中,例如Google、Uber、Dropbox和Docker等。

go 入门 需要 学习 什么?

  1. Go 语言基础:包括语言基础、变量、数据类型、控制语句、函数、指针、数组、切片、映射、结构体等等。

  2. Go 语言并发:Go 语言天生支持并发,学习并发编程需要掌握 goroutine 和 channel 的使用,以及常用的并发模型和并发编程的技巧。

  3. Go 语言标准库:Go 语言的标准库非常丰富,学习如何使用标准库可以让你更快速地编写高效的程序。

  4. Go 语言开发工具和环境:学习如何安装和配置 Go 语言的开发环境,以及如何使用 Go 的命令行工具进行编译、运行和调试程序。

  5. Go 语言网络编程:Go 语言天生支持网络编程,学习如何使用 Go 编写网络程序,包括 HTTP、TCP、UDP 等协议的编程。

  6. Go 语言测试和调试:Go 语言内置了测试框架,学习如何编写测试用例以及如何使用调试工具进行调试,可以帮助你更好地开发和维护 Go 语言程序。

Go 语言有 那些优势?

1.高效性:Go 语言的编译器和运行时系统被优化得非常高效,能够在性能和资源利用效率上做到卓越。此外,Go 语言的并发模型也被设计为非常高效,能够支持大规模并发。

  1. 简洁易学:Go 语言的语法简洁清晰,语言规范明确,学习曲线较为平滑。相比其他语言,Go 语言的语法更加简洁易读,没有冗余的语法和复杂的特性。

  2. 并发编程:Go 语言天生支持并发编程,提供了 goroutine 和 channel 等原语,使得编写高效、简洁的并发程序变得容易。并发编程也是 Go 语言的一大亮点和优势,被广泛应用于网络编程和高并发场景。

  3. 跨平台:Go 语言的编译器可以生成不同平台下的本地代码,支持跨平台开发,可以在不同操作系统和硬件上编写和运行相同的程序。

  4. 开发效率:Go 语言提供了一套完善的标准库和工具链,可以帮助开发者提高开发效率。同时,Go 语言的静态类型和自动垃圾回收等特性,可以减少代码出错的可能性,提高代码的稳定性和可维护性。

  5. 社区活跃:Go 语言的社区活跃度高,拥有庞大的开发者社区和众多的开源项目,可以提供丰富的资源和技术支持,方便学习和应用。

Go 语言 与 Java 语言 对比

  1. 语法风格:Go 语言和 Java 语言在语法风格上存在差异,Go 语言注重简洁和可读性,避免过多的语法和关键字;而 Java 语言的语法比较复杂,需要大量的关键字和语法结构来实现各种功能。

  2. 并发模型:Go 语言和 Java 语言在并发模型上存在差异。Go 语言使用 goroutine 和 channel 实现高效的并发编程;而 Java 语言则使用线程和锁等机制,需要开发者自行管理线程和锁,容易出现死锁等问题。

  3. 内存管理:Go 语言和 Java 语言在内存管理上有不同。Go 语言采用了自动垃圾回收机制,可以自动管理内存,减少内存泄漏等问题;而 Java 语言也支持垃圾回收机制,但由于 JVM 的实现方式和算法不同,可能存在一些性能和效率上的差异。

  4. 性能和效率:Go 语言和 Java 语言在性能和效率上有一定差异。由于 Go 语言的设计目标是高效和简洁,因此在性能和效率上具有优势,尤其是在大规模并发和网络编程方面。而 Java 语言则更注重开发效率和稳定性,因此在一些场景下性能和效率不如 Go 语言。

  5. 库和框架:Java 语言拥有庞大的生态系统和丰富的第三方库和框架,可以快速开发各种应用;而 Go 语言的生态系统相对较小,但也有一些优秀的第三方库和框架可供选择。

总的来说,Go 语言和 Java 语言在某些方面有相似之处,也有不同之处。选择使用哪种语言,需要根据具体的应用场景和需求进行考虑。

Go 语言 与Python 语言 对比

  1. 语法风格:Go 语言和 Python 语言在语法风格上存在差异,Go 语言注重简洁和可读性,避免过多的语法和关键字;而 Python 语言则更加注重代码的可读性和简洁性,采用缩进的方式表示代码块,避免使用大量的括号和分号。

  2. 并发模型:Go 语言和 Python 语言在并发模型上存在差异。Go 语言使用 goroutine 和 channel 实现高效的并发编程;而 Python 语言则使用多线程和协程等机制来实现并发编程。

  3. 内存管理:Go 语言和 Python 语言在内存管理上有不同。Go 语言采用了自动垃圾回收机制,可以自动管理内存,减少内存泄漏等问题;而 Python 语言也支持垃圾回收机制,但由于其实现方式和算法不同,可能存在一些性能和效率上的差异。

  4. 性能和效率:Go 语言和 Python 语言在性能和效率上有一定差异。由于 Go 语言的设计目标是高效和简洁,因此在性能和效率上具有优势,尤其是在大规模并发和网络编程方面。而 Python 语言则更注重开发效率和灵活性,因此在一些场景下性能和效率不如 Go 语言。

  5. 库和框架:Python 语言拥有庞大的生态系统和丰富的第三方库和框架,可以快速开发各种应用;而 Go 语言的生态系统相对较小,但也有一些优秀的第三方库和框架可供选择。

总的来说,Go 语言和 Python 语言在某些方面有相似之处,也有不同之处。选择使用哪种语言,需要根据具体的应用场景和需求进行考虑。

Go 语言 基于 GoLand 创建第一个程序

1. 打开 GoLand

在这里插入图片描述

2.选择 new

在这里插入图片描述

3. 选择SDK版本

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

4. 输入项目名称,点击 cteate

在这里插入图片描述

项目创建完成

在这里插入图片描述

下一步,创建一个 Go file

在这里插入图片描述
选择 app 的文件,是带main 函数的文件

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

可以直接输入 print 函数


package main

import "time"

func main() {
    
	println("libin9iOak !")
	println(time.DateTime)
	println(time.Now().Format("2006-01-02 15:04:05"))
	println("Hello Go Language !")
	println("I Can Do This !")
}


右键运行即可;

在这里插入图片描述

运行结果:
在这里插入图片描述

println(time.Now().Format("2006-01-02 15:04:05")) 语句解释:

在 Go 中,日期格式化字符串的规则是使用一些特殊的占位符来表示不同的日期和时间组件。其中,2006 年是特殊的一年,它是 Go 语言的初始版本发布的年份。因此,这个年份被用作默认的占位符,用来表示年份。

在日期格式化字符串中,使用 2006 年来代表年份,1 月来代表月份,2 日来代表日期,15 小时来代表小时,04 分钟来代表分钟,05 秒来代表秒数。这个规则可以帮助程序员更容易地记住日期格式化字符串的占位符。

所以,当你使用 time.Now().Format(“2006-01-02 15:04:05”) 这个语句时,它的意思是将当前时间按照指定的格式进行格式化输出,其中 2006-01-02 15:04:05 就是一个日期格式化字符串。使用 2006 年来表示年份,01 来表示月份,02 来表示日期,15 来表示小时,04 来表示分钟,05 来表示秒数。

因此,在 Go 中,你必须写 2006 年来代表年份,否则 Go 编译器会将它当作普通的年份来处理,导致日期格式化出现错误。

今天的分享就到这里,我们下期再见~

在这里插入图片描述

结语

通过今天的学习,您已经踏上了Golang的学习之旅。在未来的日子里,您将探索Golang的各个方面,从基础概念到高级技巧,从实际应用到性能优化。
学习一门编程语言是一个持续的过程,每一天都是您向Golang的精通迈进的重要一步。我鼓励您坚持每天学习,保持热情和好奇心,解决挑战并享受成功的喜悦。

在您的学习旅程中,不要忘记参与社区和与其他Golang开发者交流。分享您的见解和经验,向他人学习,并在开源项目或实际应用中展示您的技能。

如果您在学习过程中遇到困难或有任何问题,不要犹豫向社区和专家寻求帮助。持续学习,勇敢探索,您将在Golang领域取得令人瞩目的成就。

最后,感谢您的阅读和支持!祝愿您在未来的每一天中都能够成为一名精通Golang的开发者!

期待听到您在学习过程中的进展和成就。如果您需要进一步的帮助,请随时告诉我。祝您在学习Golang的旅程中取得巨大成功!

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

如果您在学习过程中有任何疑惑,请点击下方名片,带您一对一快速入门 Go语言 的世界 ~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44866828/article/details/130102301

智能推荐

在线靶场-墨者-电子数据取证3星-日志文件分析溯源(时差)-程序员宅基地

文章浏览阅读147次。打开靶场,下载日志文件。打开日志文件,寻找目的ip地址根据题目意思,找到时间为9月27日14点23分40秒,访问过/admin/的ip把该ip地址输入靶场,即可得到本题的key。..._日志文件分析溯源(时差)

linux命令:vim_vim换行-程序员宅基地

vim是Linux下功能强大的文本编辑器。有三种模式:命令模式、编辑模式和底线命令模式。命令模式输入命令,编辑模式输入内容,底线命令模式用于保存和退出文件。

字节跳动技术总监自爆:Java虚拟机的历史_除了hotspot还有什么-程序员宅基地

文章浏览阅读103次。当谈到Java虚拟机时,许多人把它们等同于热点虚拟机。但实际上,除了HotSpot之外,还有Sun Classic VM、Exact VM、BEA JRocketit、IBM J9等等。今天我们将简要回顾Java虚拟机的历史。虚拟机始祖:Sun Classic1996年1月23日,Sun发布了JDK 1.0,带有自己的虚拟机Classic VM。然而,该虚拟机具有仅使用纯解释器来执行Java代码的特性。如果要使用JIT编译器,则必须使用插件。提示:执行代码可以分为编译执行和解释执行。解释执行指的是在_除了hotspot还有什么

【实例】ZYNQ实现PL和PS端数据交互的DDR3 AXI_DMA读写功能及中断通知-程序员宅基地

文章浏览阅读775次,点赞15次,收藏9次。该工程源代码实现了通过ddr3的axi_dma进行PL和PS端的数据交互,并支持PS端通过gpio控制axi_dma读写模块的使能,以及通过axi_lite寄存器配置dma的读写地址范围和数据长度。功能:实现PL和PS端通过ddr3的axi_dma读和写进行数据交互,PS端可通过gpio控制axi_dma读写模块的使能,PS端可通过axi_lite寄存器配置dma的读和写的地址范围或数据长度,PL端的dma写完成后通过中断信号通知PS端。用户可通过该例程比较快速的搭建自己的更丰富的应用,节省您的开发周期。

C++项目中使用Redis读写数据_c++ 读写redis-程序员宅基地

文章浏览阅读2.2k次。auto redis = Redis("tcp://[email protected]:6379/0?keep_alive=true"); redis.hset("LogonServer", "1","192.168.8.105:8600"); auto v = redis.hget("LogonServer","1"); redis.save();_c++ 读写redis

day9-格式字符串及函数作业_、、、:能丨氵‘、、、 、串↑、∴、、∴ 、、-程序员宅基地

文章浏览阅读172次。编写一个函数,交换指定字典的key和value。 例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'} def change_1(dic): """ 交换字典的键和值并打印 :param dic: 指定的字典 :return: 交换键和值后的字典 """ dic1 = dict([(value,key) for key,value in dic.items()]).._、、、:能丨氵‘、、、 、串↑、∴、、∴ 、、

随便推点

20190323-Excel使用手册-程序员宅基地

文章浏览阅读1.8k次。文章目录1 输入数据1.1常规数据的输入技巧1.1.1数据输入的方式1.1.2 输入数值型数据1.1.3 输入时间日期型数据1.1.4 输入文本型数据1.2 特殊数据的输入技巧1.2.1输入身份证号码1.2.2 输入特殊符号1.2.3 通过插入批注来为单元格添加注释1.3 高效数据的输入技巧1.3.1 输入有规律的数据(填充)1.3.2 输入相同数据1.3.3 自动输入数据1.3.4 输入有效性数..._excel使用手册

OpenCV-图像梯度_@sa scharr, laplacian, sepfilter2d, filter2d, gaus-程序员宅基地

文章浏览阅读187次。title: OpenCV-图像梯度图像梯度学习"""学习: - 查找图像梯度,边缘等 - 我们将看到以下函数:cv.Sobel(),cv.Scharr(),cv.Laplacian()等OpenCV提供三种类型的梯度滤波器或高通滤波器,即Sobel,Scharr和Laplacian。1. Sobel 和 Scharr 算子Sobel算子是高斯平滑加微分运算的联合运算,因此它更抗噪声。逆可以指定要采用的导数方向,垂直或水平(分别通过参数yorder和xorder)。逆还可以通过参数ksi._@sa scharr, laplacian, sepfilter2d, filter2d, gaussianblur, carttopolar

C语言:布尔值、宏定义、类型定义_c语言布尔型变量赋值-程序员宅基地

文章浏览阅读2.4k次。宏定义因为许多程序需要变量能存储真值或假值,所以C语言缺少适当的布尔类型可能会很麻烦。一直采用模拟布尔型变量的方法来解决麻烦,这种模拟的方法是先声明int型变量,然后将其赋值0或1。int flag;flag = 0;...flag = 1;虽然这种方法可行,但是对于程序的可读性没有多大的贡献,因为没有明确地表示flag的赋值只能是布尔值,并且也没明确指出0和1表示假和真。为了使程序更加便于理解,一个好的方法是类似于TRUE和FALSE这样的名字来定义宏。#define TRUE 1#d_c语言布尔型变量赋值

springmvc返回String乱码问题_springmvc return string乱码-程序员宅基地

文章浏览阅读1.8k次。不多说,直接上码 本人测试成功,可以解决Springmvc返回为String的乱码问题<mvc:annotation-driven > <!-- 消息转换器 --> <mvc:message-converters register-defaults="true"> <bean class="org.spri..._springmvc return string乱码

linux服务器 确认网卡(网口)对应的配置文件_cannot identify nic-程序员宅基地

文章浏览阅读1.5k次。每次给服务器装完系统,总是无法将网口和配置文件对应,笨办法一个一个试,有的服务器可以用ifdown、ifup来观察网卡指示灯,但是这个方法只对一部分服务器有效。下面两种方法可以快速对应:方法一:使用ethtool(在服务器旁)如果在服务器旁边则可通过以下命令进行测试:ethtool -p eth0此时eth0文件对应的网口就会闪烁。(eth0文件就是 /etc/sysconfig/network-scripts/ 目录下以 ifcfg- 开头的文件名的后半部分)方法二:使用mii-tool(不_cannot identify nic

Python调用C/C++动态链接库_pythond 动态库-程序员宅基地

文章浏览阅读284次。Python调用C/C++动态链接库的需求在自动化测试过程中,难免会遇到语言混合使用的情况,这不,我们也遇到了。初步决定采用Robot Framework作为自动化测试框架后,其支持Java和Python,而Python作为主流的语言,怎么能放弃使用它的机会^_^。 然而产品采用是古老90年代开发的C/S结构,因为古老,当时也没有考虑到对产品的测试进行自动化,Client端并没有预留CLI(Com..._pythond 动态库

推荐文章

热门文章

相关标签