Learning go from zero to hero - Part 2

作者:Milap Neupane 链接:https://medium.freecodecamp.org/learning-go-from-zero-to-hero-d2a3223b3d86 函数 main.go包中定义的func main()是执行程序的入口。可以定义和使用更多函数。让我们看一个简单的例子: func add(a int, b int) int { c := a + b return c } func main() { fmt.Println(add(2, 1)) } // 3 正如我们在上面的例子中所看到的,使用**func关键字后跟函数名来定义 Go 函数。函数所需的参数**需要根据其数据类型定义,最后是返回的数据类型。 函数的返回也可以在函数中预定义: func add(a int, b int) (c int) { c = a + b return } func main() { fmt.Println(add(2, 1)) } // 3 这里 c 被定义为返回变量。因此,定义的变量 c 将自动返回,而无需在结尾的 return 语句中定义。 还可以从单个函数返回多个返回值,将返回值与逗号分隔开。 func add(a int, b int) (int, string) { c := a + b return c, "successfully added" } func main() { sum, message := add(2, 1) fmt.Println(message) fmt.Println(sum) } 结构、方法和接口 Go 不是一个完全面向对象的语言,但是它的结构,接口和方法,和面向对象有异曲同工之妙。 结构 结构struct是不同类型字段的集合。结构用于将数据分组在一起。例如,如果我们想要对Person类型的数据进行分组,我们会定义一个人的属性,其中可能包括姓名,年龄,性别。可以使用以下语法定义结构: type person struct { name string age int gender string } 在定义了人类型结构的情况下,现在让我们创建一个person: //方式 1:指定属性和值 p = person{name: "Bob", age: 42, gender: "Male"} //方式 2:仅指定值 person{"Bob", 42, "Male"} 我们可以用点.轻松访问这些数据 ...

2018-12-28 · 5 min · L

Learning go from zero to hero - Part 1

作者:Milap Neupane 链接:https://medium.freecodecamp.org/learning-go-from-zero-to-hero-d2a3223b3d86 开始 想到刚开始学习 Go 的时候,也是不清不楚地本着拿来能用就行的心态,没有系统学习,导致学习过程中踩坑无数。今天发现一篇文章写的很好,Go 语言的特征讲得很细,翻译给需要的初学 Go 的同学。 前言 让我们从 Go(或者称为 Golang)的一个小介绍开始。Go 由 Google 工程师 Robert Griesemer,Rob Pike 和 Ken Thompson 设计。它是一种静态类型的编译语言。第一个版本于 2012 年 3 月作为开源发布。 “Go 是一种开源编程语言,可以轻松构建简单,可靠,高效的软件” 在许多语言中,有许多方法可以解决给定的问题。程序员可以花很多时间思考解决问题的最佳方法。 另一方面,Go 相信更少的功能 — 只有一种正确的方法来解决问题。 这节省了开发人员的时间,并使大型代码库易于维护。 “功能越多,成本越高” — Rob Pike 入门 Go 由package组成。名为main的包告诉 Go 编译器被编译为可执行文件,而不是作为 library 被引用。它是应用程序的主入口。主包定义为: package main 让我们在 Go 工作区中创建一个简单的 hello world 示例。 工作区 Go 中的工作空间由环境变量定义,称为 GOPATH。 你的任何代码都将写在工作区内。Go 将搜索GOPATH目录中的任何包,或者GOROOT在安装 Go 时默认设置的目录。注:GOROOT 是安装 go 的路径。 ...

2018-12-22 · 3 min · L