• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > Go语言编程入门超级指南

Go语言编程入门超级指南

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了go语言编程入门,go语言编程pdf,go语言编程,go语言在线编程,go语言入门等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1.序言

Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis、类Evernote的云笔记leanote等。

1.1 为什么要学习

如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵。如果你是某种语言老手,你就是那门语言的“传道者”,下意识地会保护它。无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的。《肖申克的救赎》对此有很好的注脚:

[Red] These walls are funny. First you hate ‘em, then you get used to ‘em. Enough time passes, you get so you depend on them. That's institutionalized.
这些墙很有趣。起初你恨它们,之后你习惯了它们。随着时间流逝,你开始以来它们。这就是体制。
在你还没有被完全“体制化”时,为何不多学些语言,哪怕只是浅尝辄止,潜移默化中也许你的思维壁垒就松动了。不管是Golang还是Ruby还是其他语言,当看到一些语法习惯与之前熟悉的C和Java不同时,的确潜意识里就会产生抵触情绪,觉得这不好,还是自己习惯的那套好。长此以往,如果不能冲破自己的心理,“坐以待毙”,被时间淘汰恐怕只是早晚的事儿。所以这里的关键也 不是非要学习Golang,而是要不断地学!

1.2 用什么工具来开发

Golang也有专门的IDE,但由于最近迷上了Sublime Text神器,所以这里还是用ST来学习Golang。配置步骤与在ST中使用其他语言开发都类似:

安装智能提示插件GoSublime
创建编译配置脚本
点Preferences -> Package Settings -> GoSublime -> User Settings中写入(感觉保存时自动格式化出来的缩进、空格等风格有些“讨厌”,所以就禁掉了):
{
    "fmt_enabled": false,
    "env": {   
        "path":"D:\\Program Files (x86)\\Go\bin"
    }
}

点新建Build System产生go.sublime-build中写入:

{
    "path": "D:\\Program Files (x86)\\Go\\bin",
    "cmd": ["go", "run", "${file}"],
    "selector": "source.go"
}
</div>
2.你好,世界

Golang版的HelloWorld来了!一眼望去,package和import的声明方式与Java如出一辙,比较明显的区别是:func关键字、每行末尾没有分号、Println()大写的函数名。这个例子虽小,却“五脏俱全”,后面会逐一分析这个小例子中碰到的Golang语法点。
package main

import "fmt"

func main() {
    fmt.Println("你好,世界!")
}
</div>
2.1 运行方式

Golang提供了go run“解释”执行和go build编译执行两种运行方式,所谓的“解释”执行其实也是编译出了可执行文件后才执行的。
$ go run helloworld.go
</div>
你好,世界!
$ go build helloworld.go
$ ls
</div>
helloworld  helloworld.go
$ ./helloworld
</div>
你好,世界!

2.2 Package管理

上面例子中我们使用的就是fmt包下的Println()函数。Golang约定:我们可以用./或../相对路径来引自己的package;如果不是相对路径,那么go会去$GOPATH/src下查找。

2.3 格式化输出

类似C、Java等语言,Golang的fmt包提供了格式化输出功能,而且像%d、%s等占位符和\t、\r、\n转义也几乎完全一致。但Golang的Println不支持格式化,只有Printf支持,所以我们经常会在后面加入\n换行。此外,Golang加入了%T打印值的类型,%v打印数组等集合的所有元素。
package main

import "fmt"
import "math"

/**
 * This is Printer!
 * 布尔值:false
 * 二进制:11111111
 * 八进制:377
 * 十六进制:FF
 * 十进制:255
 * 浮点数:3.141593
 * 字符串:printer
 *
 * 对象类型:int,string,bool,float64
 * 集合:[1 2 3 4 5]
 */
func main() {
    fmt.Println("This is Printer!")

    fmt.Printf("布尔值:%t\n", 1 == 2)
    fmt.Printf("二进制:%b\n", 255)
    fmt.Printf("八进制:%o\n", 255)
    fmt.Printf("十六进制:%X\n", 255)
    fmt.Printf("十进制:%d\n", 255)
    fmt.Printf("浮点数:%f\n", math.Pi)
    fmt.Printf("字符串:%s\n", "printer")

    fmt.Printf("对象类型:%T,%T,%T,%T\n", 1, "hello", true, math.E)
    fmt.Printf("集合:%v\n", [5]int{1, 2, 3, 4, 5})
}
</div>
3.语法基础

3.1 变量和常量

虽然Golang是静态类型语言,却用类似JavaScript中的var关键字声明变量。而且像同样是静态语言的Scala一样,支持类型自动推断。有一点很重要的不同是:如果明确指明变量类型的话,类型要放在变量名后面。这有点别扭吧?!后面会看到函数的入参和返回值的类型也要这样声明。
package main

import "fmt"

/**
 * 单变量声明:num[100], word[hello]
 * 多变量声明:i[1], i[2], k[3]
 * 推导类型:b1[true], b2[false]
 * 常量:age[20], pi[3.141593]
 */
func main() {
    var num int = 100
    var word string = "hello"
    fmt.Printf("单变量声明:num[%d], word[%s]\n", num, word)

    var i, j, k int = 1, 2, 3
    fmt.Printf("多变量声明:i[%d], i[%d], k[%d]\n", i, j, k)

    var b1 = true
    b2 := false
    fmt.Printf("推导类型:b1[%t], b2[%t]\n", b1, b2)

    const age int = 20
    const pi float32 = 3.1415926
    fmt.Printf("常量:age[%d], pi[%f]\n", age, pi)
}
</div>
3.2 控制语句

作为最基本的语法要素,Golang的各种控制语句也是特点鲜明。在对C继承发扬的同时,也有自己的想法融入其中:

if/switch/for的条件部分都没有圆括号,但必须有花括号。
switch的case中不需要break。《C专家编程》里也“控诉”了C的fall-through问题。既然90%以上的情况都要break,为何不将break作为case的默认行为?而且编程语言后来者也鲜有纠正这一问题的。
switch的case条件可以是多个值。
Golang中没有while。
package main

import "fmt"

/**
 * tes

您可能想查找下面的文章:

  • Go语言编程入门超级指南
  • Go语言入门教程之基础语法快速入门

相关文章

  • Go语言的Windows下环境配置以及简单的程序结构讲解
  • Go语言中的复合类型详细介绍
  • Go语言服务器开发实现最简单HTTP的GET与POST接口
  • go语言使用scp的方法实例分析
  • Go语言中的switch用法实例分析
  • Go语言中常量定义方法实例分析
  • golang网络socket粘包问题的解决方法
  • 举例详解Go语言中os库的常用函数用法
  • golang简单tls协议用法完整示例
  • 在Mac OS上安装Go语言编译器的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Go语言hello world实例
    • go语言base64用法实例
    • Golang继承模拟实例详解
    • Go语言展现快速排序算法全过程的思路及代码示例
    • Go语言生成随机数的方法
    • Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结
    • Go语言使用字符串的几个技巧分享
    • Go语言模拟while语句实现无限循环的方法
    • go语言获取系统盘符的方法
    • Go语言的队列和堆栈实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有