[GO编程] GO入门语法基础

简介:

学习一门语言,首先肯定是要熟悉他的语法,然后才可以进行编程开发,虽然本人使用过C++,.net等语言,不过对于GO的一些新特性还是需要多多熟悉,否则即使看得懂也写不出程序来。今天我们就开始我们的GO Hello World!

当我们新建一个GO MODULE,就会看到一个main.go,具体代码如下所示:

1
2
3
4
5
6
7
8
package main
 
import  "fmt"
 
 
func main() {
       fmt.Printf( "Hello, world!" )
}

这个就是GO的Hello World程序,熟悉.NET程序的都知道,在.NET中以命名空间来区分不同的类型,组织代码,而在GO中,则使用package的形式来组织代码。在引用其他包时,如果没有特殊定义需要带上包名称。  

其中import一看就知道,.NET中的using,也可以指定包的别名。也可以省略包名称,需要使用"_"作为别名。因为每一个包都有一个默认的init函数,有时候引入的时候不调用里面的方法,只想执行init方法可以使用“.”来忽略。

当然每一个应用程序都有一个特定的入口即main,那个方法不返还任何值。声明方法使用func,在GO中使用结构来定义一个实体,使用type T struct格式。GO也是面向对象的,当然也具备面向对象的一些功能,例如重写,集成等等。在GO中另一个非常重要的就是接口,GO中的接口只能定义方法,而且只要有结构实现了接口中定义的方法就表明实现了这个接口,这个在开发过程中真的有点不适应。

在GO中大写字母开头的为全局对象,开一在包外部调用,小写的只能在包内部调用。我们再看一下代码,这样能够更好的理解其中的一些用法,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package main
 
import  (
     "os"
     "flag"   / /  command line option parser
)
 
 
var omitNewline  =  flag. Bool ( "n" , false,  "don't print final newline" )
 
 
const (
     Space  =  " "
     Newline  =  "\n"
)
 
 
func main() {
     flag.Parse()    / /  Scans the arg  list  and  sets up flags
     var s string  =  ""
     for  i : =  0 ; i < flag.NArg(); i + +  {
         if  i >  0  {
             + =  Space
         }
         + =  flag.Arg(i)
     }
     if  ! * omitNewline {
         + =  Newline
     }
     os.Stdout.WriteString(s)
}

在GO中声明变量和VB有点像,使用var声明变量,最后加类型,当然也可以使用使用“:=”格式来直接一步到位。声明常量使用const,枚举也使用这个,不过枚举的第一个值需要注明iota,这样代表下一个会根据第一个进行计算得到常量值。

1
2
3
4
5
6
7
8
9
10
11
12
type  ByteSize float64
const (
     =  iota   / /  ignore first value by assigning to blank identifier
     KB ByteSize  =  1 <<( 10 * iota)
     MB
     GB
     TB
     PB
     EB
     ZB
     YB
)

GO还有一个很大的优点就是函数可以返回多个值,也可以返回指定的值,这是一个相当好用的,不需要像.NET中那样,写很多个out。这一篇主要介绍一下GO的基础知识,下一篇我们将慢慢的进一步解读GO的编程方法,希望能够早点适应这种编写方法,熟悉他的标准库。  

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/p/go-syntax-basic.html,如需转载请自行联系原作者

相关文章
|
3月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟蒋星熠Jaxonic,Go语言探索者。深耕云计算、微服务与并发编程,以代码为笔,在二进制星河中书写极客诗篇。分享Go核心原理、性能优化与实战架构,助力开发者掌握云原生时代利器。#Go语言 #并发编程 #性能优化
493 43
Go语言深度解析:从入门到精通的完整指南
|
6月前
|
算法 Go
Go 语言泛型 — 泛型语法与示例
本文详解 Go 语言泛型语法与使用示例,涵盖泛型函数、类型声明、类型约束及实战应用,适合入门学习与开发实践。
|
8月前
|
人工智能 安全 算法
Go入门实战:并发模式的使用
本文详细探讨了Go语言的并发模式,包括Goroutine、Channel、Mutex和WaitGroup等核心概念。通过具体代码实例与详细解释,介绍了这些模式的原理及应用。同时分析了未来发展趋势与挑战,如更高效的并发控制、更好的并发安全及性能优化。Go语言凭借其优秀的并发性能,在现代编程中备受青睐。
263 33
|
3月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
259 1
|
4月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟 蒋星熠Jaxonic,执着的星际旅人,用Go语言编写代码诗篇。🚀 Go语言以简洁、高效、并发为核心,助力云计算与微服务革新。📚 本文详解Go语法、并发模型、性能优化与实战案例,助你掌握现代编程精髓。🌌 从goroutine到channel,从内存优化到高并发架构,全面解析Go的强大力量。🔧 实战构建高性能Web服务,展现Go在云原生时代的无限可能。✨ 附技术对比、最佳实践与生态全景,带你踏上Go语言的星辰征途。#Go语言 #并发编程 #云原生 #性能优化
|
8月前
|
设计模式 缓存 算法
Go如何进行高质量编程与性能调优实践
本文介绍了Go语言高质量编程与性能调优的实践方法。高质量编程包括良好的编码习惯(如清晰注释、命名规范)、代码风格与设计(如MVC模式)、简洁明了的代码原则,以及单元测试与代码重构的重要性。性能调优方面,涵盖算法优化、数据结构选择、I/O优化、内存管理、并行与并发处理优化及代码层面的改进。通过这些方法,可有效提升代码质量和系统性能。
182 13
|
8月前
|
分布式计算 Go C++
初探Go语言RPC编程手法
总的来说,Go语言的RPC编程是一种强大的工具,让分布式计算变得简单如同本地计算。如果你还没有试过,不妨挑战一下这个新的编程领域,你可能会发现新的世界。
216 10
|
人工智能 IDE 程序员
Go 官方宣布不再改进错误处理语法,背后原因是什么?
Go 官方发布了一篇博客文章,正式宣布:他们不会再推进任何新的错误处理语法提案。这也意味着,未来编写 Go 代码时,你依然会频繁地写下那句熟悉的 if err != nil {return err}。
117 0
|
9月前
|
存储 算法 数据可视化
【二叉树遍历入门:从中序遍历到层序与右视图】【LeetCode 热题100】94:二叉树的中序遍历、102:二叉树的层序遍历、199:二叉树的右视图(详细解析)(Go语言版)
本文详细解析了二叉树的三种经典遍历方式:中序遍历(94题)、层序遍历(102题)和右视图(199题)。通过递归与迭代实现中序遍历,深入理解深度优先搜索(DFS);借助队列完成层序遍历和右视图,掌握广度优先搜索(BFS)。文章对比DFS与BFS的思维方式,总结不同遍历的应用场景,为后续构造树结构奠定基础。
484 10
|
11月前
|
存储 Go
Go 语言入门指南:切片
Golang中的切片(Slice)是基于数组的动态序列,支持变长操作。它由指针、长度和容量三部分组成,底层引用一个连续的数组片段。切片提供灵活的增减元素功能,语法形式为`[]T`,其中T为元素类型。相比固定长度的数组,切片更常用,允许动态调整大小,并且多个切片可以共享同一底层数组。通过内置的`make`函数可创建指定长度和容量的切片。需要注意的是,切片不能直接比较,只能与`nil`比较,且空切片的长度为0。
289 3
Go 语言入门指南:切片