<output id="ilehw"><bdo id="ilehw"><nobr id="ilehw"></nobr></bdo></output>
        <dl id="ilehw"><font id="ilehw"></font></dl>
          1. 从 0 到 1 学习 Go 语言 已翻译 100%

            oschina 投递于 2018/12/25 15:25 (共 35 段, 翻译完成于 01-04)
            阅读 3726
            收藏 81
            6
            加载中

            图片:Gopher 吉祥物和旧 logo

            简要介绍下 Go(Golang)语言。Go 语言的是由谷歌的工程师 Robert Griesemer、Rob Pike 和 Ken Thompson 创造的一种静态类型编译语言。首个开源版本发布于2012年3月。

            “Go 是一种开源编程语言,可以轻松构建简单、可靠、高效的软件。”

            — GoLang

            mufengs
            mufengs
            翻译于 2018/12/26 10:58
            0

            在诸多编程语言中,解决给定问题的方法有很多,程序员需要花很多时间思考关于解决问题的最佳方法。

            但是,Go 相信更少的功能 - 只有一种正确的方法来解决问题。

            这节省了开发人员的时间,并使大型代码库易于维护。 Go 中没有 maps 和 filters 等“富有表现力”的功能。

            “当你需要增加功能的丰富性,往往伴随着开销的增?#21360;?

            - Rob Pike

            golang 最新发布的 logo: https://blog.golang.org/go-brand

            mufengs
            mufengs
            翻译于 2018/12/26 13:37
            0

            入门

            Go 程序由包组成。编译器会将 main 包编译成可执行程序,而不是共享库。main 包是整个应用的入口。main 包的定义如下:

            package main

            接下来,咱们在 Go 的工作空间中创建一个叫做 main.go 的文件,来实现一个简单的 hello world 例?#21360;?/p>

            kjmeng
            kjmeng
            翻译于 2018/12/26 13:08
            0

            工作空间(Workspace)

            Go 的工作空间可以通过环境变量 GOPATH 定义。

            你需要在这个工作空间中编写你自己的代码。Go 为搜索 GOPATH 以及 GOROOT 指定的目录中的所有包,GOROOT 变量是在安装 GO 时设置的,也就是 go 语言安装的目录。

            将 GOPATH 设置到预期目录。现在,增加一个文件夹 ~/workspace

            # export env
            export GOPATH=~/workspace
            
            # go inside the workspace directory
            cd ~/workspace

            接下来在这个工作空间中创建 main.go ,写入下面的代码。

            kjmeng
            kjmeng
            翻译于 2018/12/26 13:14
            0

            Hello World!

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

            在上面的示例代码中,fmt 是 Go 的一个内置包,主要实现格?#20132;?I/O 的功能。

            在 Go 语言中,通过 import 关键字引入一个包。func main 是可执行代码的入口。fmt 中的 Println 函数实现 “hello world” 的打印。

            下面尝试运行这个文件。我们可以通过两种方法运行一个 Go 命令。我们知道 Go 是一个编译性语言,所以,在执行之前我们先来编译它。

            > go build main.go

            上面的命令就生成了一个可执行文件 main ,接下来我们运行这个文件:

            > ./main
             # Hello World!

            接下来看另外一种更加简单的执行方式。go run 命令将编译步骤抽象。那么,通过下面的命令就可以执行这个程序。

            go run main.go
             # Hello World!

            注意:可以使用 https://play.golang.org 尝试上面的代码。

            kjmeng
            kjmeng
            翻译于 2018/12/26 14:10
            0

            变量

            Go 的变量必须显式声明。Go 是静态类型的语言,也就是说,在变?#21487;?#26126;时要检查变量类型。可以如下声明一个变量:

            var a int

            在这种情况下,变量的值会被设为0。也可以通过下面的语法声明变量并初始化为不同的值:

            var a = 1

            在这里,变量自动被判断为一个整形变量。我们可以通过简化?#38382;?#26469;声明变量:

            message := "hello world"

            也可以在一行声明多个变量:

            var b, c int = 2, 3
            kjmeng
            kjmeng
            翻译于 2018/12/26 15:43
            0

            数据类型

            ?#25512;?#20182;编程语言一样,Go 语言也有不同的数据类型。接下来就来看一下:

            数字(Number)、字符串(String)和布尔(Boolean)

            可支持数?#25191;?#20648;类型有 int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr…

            字符串以字节序列的?#38382;?#23384;储。用string关键字表示和声明。

            布尔型变量的关键字是 bool 。

            Go 还支持以 complex64 和 complex128 声明的复杂数字类型。

            var a bool = true
            var b int = 1
            var c string = 'hello world'
            var d float32 = 1.222
            var x complex128 = cmplx.Sqrt(-5 + 12i)
            kjmeng
            kjmeng
            翻译于 2018/12/26 15:51
            0

            数组、切片、集合

            数组是相同数据类型的元素序列。数组具有在声明中定义的固定长度,因此不能进行扩展。数组声明为:

            var a [5]int

            数组也可以是多维的。我们可以使用以下格式创建它们:

            var multiD [2][3]int

            当数组的值在运行时更改时,数组限制了这种情况。 数组也不提供获取子数组的能力。 为此,Go 有一个名为 slices 的数据类型。 切片存储一系列元素,可以随时扩展。 切片声明类似于数组声明 - 没有定义容量:

            var b []int

            这将创建一个零容量和零长度的切片。切片也可以定义容量和长度。我们可以使用以下语法:

            numbers := make([]int,5,10)

            这里,切片的初始长度为5,容量为10。

            mufengs
            mufengs
            翻译于 2018/12/26 17:01
            0

            切片是数组的抽象。切片使用数组作为底层结构。切片包含三个组件:容量,长度和指向底层数组的指针,如下图所示:

            图片来源: https://blog.golang.org/go-slices-usage-and-internals

            通过使用append或copy函数可以增加切片的容量。 append函数可以为数组的末尾添加值,并在需要时增加容量。

            numbers = append(numbers, 1, 2, 3, 4)

            增加切片容量的另一种方法是使用复制功能。只需创建另一个具有更大容量的切片,并将原始切片复制到新创建的切片:

            // create a new slice
            number2 := make([]int, 15)
            // copy the original slice to new slice
            copy(number2, number)
            mufengs
            mufengs
            翻译于 2018/12/26 21:52
            0

            我们可?#28304;?#24314;切片的子切片。这可以使用以下命令完成:

            // initialize a slice with 4 len and values
            number2 = []int{1,2,3,4}
            fmt.Println(numbers) // -> [1 2 3 4]
            // create sub slices
            slice1 := number2[2:]
            fmt.Println(slice1) // -> [3 4]
            slice2 := number2[:3]
            fmt.Println(slice2) // -> [1 2 3]
            slice3 := number2[1:4]
            fmt.Println(slice3) // -> [2 3 4]

            集合是Go中的数据类型,它将键?#25104;?#21040;值。我们可以使用以下命令定义?#25104;洌?/p>

            var m map[string]int

            这里m是新的集合变量,它的键为字符串,值为整数。我们可以轻松地将键和值添加到地图中:

            // adding key/value
            m['clearity'] = 2
            m['simplicity'] = 3
            // printing the values
            fmt.Println(m['clearity']) // -> 2
            fmt.Println(m['simplicity']) // -> 3
            mufengs
            mufengs
            翻译于 2018/12/28 17:03
            0
            本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链?#21360;?/div>
            我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
            加载中

            评论(6)

            iGoo
            iGoo

            引用来自“寂寞的大师”的评论

            用学习go和用go来写项目,差的不是一点半点。一个phper的心声。。。
            说出了大实话
            小卡车呼呼呼
            你们不要学,我刚学完。
            寂寞的大师
            寂寞的大师
            用学习go和用go来写项目,差的不是一点半点。一个phper的心声。。。
            来自山卡拉的你
            来自山卡拉的你

            引用来自“天天笑笑”的评论

            什么乱七八糟的,方法有时大写开头,有时又是小写开头?
            golang大写开头的方法是暴露给其他包使用时需要的, 如果同一个包名, 小写即可
            天天笑笑
            天天笑笑
            什么乱七八糟的,方法有时大写开头,有时又是小写开头?
            mufengs
            mufengs
            #Go#不是很完整,感觉还需要完善。回头多琢磨琢磨
            返回顶部
            顶部
            广东快乐十分实时开奖

                  <output id="ilehw"><bdo id="ilehw"><nobr id="ilehw"></nobr></bdo></output>
                  <dl id="ilehw"><font id="ilehw"></font></dl>

                            <output id="ilehw"><bdo id="ilehw"><nobr id="ilehw"></nobr></bdo></output>
                            <dl id="ilehw"><font id="ilehw"></font></dl>
                              1. 内蒙古彩票千万大奖 2019009期双色球的开奖现场 澳洲幸运8是官方的吗 3d投注技巧及试机号口诀 江西多乐彩彩彩乐乐 新疆时时彩主页 成都竞彩店分布图 内蒙古快3开奖结果预测 宁夏11选5直播 河北时时彩开奖结果 排列3试机号金码今天 江西快3开奖查询 2013年6肖中特 竞猜大小球怎么投注 湖北快三免费预测推荐