mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 03:06:41 +08:00
@@ -236,7 +236,7 @@ godoc 工具(第 3.6 节)会收集这些注释并产生一个技术文档。
|
||||
|
||||
## 4.2.4 类型
|
||||
|
||||
可以包含数据的变量(或常量)可以使用不同的数据类型或类型来保存数据。使用 var 声明的变量的值会自动初始化为该类型的零值。类型定义了某个变量的值的集合与可对其进行操作的集合。
|
||||
可以包含数据的变量(或常量),可以使用不同的数据类型或类型来保存数据。使用 var 声明的变量的值会自动初始化为该类型的零值。类型定义了某个变量的值的集合与可对其进行操作的集合。
|
||||
|
||||
类型可以是基本类型,如:int、float、bool、string;结构化的(复合的),如:struct、array、slice、map、channel;只描述类型的行为的,如:interface。
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# 9.5 自定义包和可见性
|
||||
|
||||
包是 Go 语言中代码组成和代码编译的主要方式。很多关于它们的基本信息已经在 4.2 章节中给出,最引人注目的便是可见性。现在我们来看看具体如何来使用自己写的包。在下一节,我们将回顾一些标准库中的包,自定义的包和标准库以外的包。
|
||||
包是 Go 语言中代码组织和代码编译的主要方式。很多关于它们的基本信息已经在 4.2 章节中给出,最引人注目的便是可见性。现在我们来看看具体如何来使用自己写的包。在下一节,我们将回顾一些标准库中的包,自定义的包和标准库以外的包。
|
||||
|
||||
当写自己包的时候,要使用短小的不含有 `_`(下划线)的小写单词来为文件命名。这里有个简单例子来说明包是如何相互调用以及可见性是如何实现的。
|
||||
|
||||
@@ -78,7 +78,7 @@ fmt.Printf(“Float from package1: %f\n”, pack1.pack1Float)
|
||||
|
||||
**Import with .** : import . "./pack1"
|
||||
|
||||
当使用.来做为包的别名时,你可以不通过包名来使用其中的项目。例如:`test := ReturnStr()`。
|
||||
当使用`.`来做为包的别名时,你可以不通过包名来使用其中的项目。例如:`test := ReturnStr()`。
|
||||
|
||||
在当前的命名空间导入 pack1 包,一般是为了具有更好的测试效果。
|
||||
|
||||
@@ -114,7 +114,7 @@ pack1包只导入其副作用,也就是说,只执行它的init函数并初
|
||||
|
||||
init 函数是不能被调用的。
|
||||
|
||||
导入的包在包自身初始化前被初始化,而一个包在程序执行中只能初始化一次。
|
||||
导入的包在包自身初始化前被初始化,而一个包在程序执行中只能初始化一次。
|
||||
|
||||
**编译并安装一个包(参见第 9.7 节):**
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# 9.8 自定义包的目录结构、go install 和 go test
|
||||
|
||||
为了示范,我们创建了一个名为 uc 的简单包,它含有一个 `UpperCase` 函数将字符串的所有字母转换为大写。当然这并不值得创建一个自己包,同样的功能已被包含在 `strings` 包里,但是同样的技术也可以应用在更复杂的包中。
|
||||
为了示范,我们创建了一个名为 uc 的简单包,它含有一个 `UpperCase` 函数将字符串的所有字母转换为大写。当然这并不值得创建一个自己包,同样的功能已被包含在 `strings` 包里,但是同样的技术也可以应用在更复杂的包中。
|
||||
|
||||
## 9.8.1 自定义包的目录结构
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
pkg/linux_amd64
|
||||
uc.a (包的目标文件)
|
||||
|
||||
将你的项目放在 goprograms 目录下(你可以创建一个环境变量 GOPATH,详见第 2.2/3 章节:在 .profile 和 .bashrc 文件中添加 `export GOPATH=/home/user/goprograms`),而你的项目将作为 src 的子目录。uc 包 中的功能在 uc.go 中实现。
|
||||
将你的项目放在 goprograms 目录下(你可以创建一个环境变量 GOPATH,详见第 2.2/3 章节:在 .profile 和 .bashrc 文件中添加 `export GOPATH=/home/user/goprograms`),而你的项目将作为 src 的子目录。uc 包中的功能在 uc.go 中实现。
|
||||
|
||||
示例 9.6 [uc.go](examples/chapter_9/uc.go):
|
||||
|
||||
@@ -86,7 +86,7 @@ include $(GOROOT)/scr/Make.pkg
|
||||
|
||||
这个包可以通过 go test 测试。
|
||||
|
||||
创建一个 ud.a 的测试文件在目录下,输出为 PASS 时测试通过。
|
||||
创建一个 uc.a 的测试文件在目录下,输出为 PASS 时测试通过。
|
||||
|
||||
在第 13.8 节我们将给出另外一个测试例子并进行深入研究。
|
||||
|
||||
@@ -122,7 +122,7 @@ GOFILES=\
|
||||
include $GOROOT/src/Make.cmd
|
||||
```
|
||||
|
||||
执行 gomake 编译 `ucmain.go` 到 ucmain 目录
|
||||
执行 gomake 编译 `ucmain.go` 成可执行文件ucmain
|
||||
|
||||
运行 `./ucmain` 显示: `USING package uc!`。
|
||||
|
||||
@@ -147,7 +147,7 @@ include $GOROOT/src/Make.cmd
|
||||
|
||||
## 9.8.3 依赖系统的代码
|
||||
|
||||
不同操作系统上运行不同的程序是非常少见的:绝大多数情况下语言和标准库解决了大部分的可移植性问题。
|
||||
在不同的操作系统上运行的程序以不同的代码实现是非常少见的:绝大多数情况下语言和标准库解决了大部分的可移植性问题。
|
||||
|
||||
你有一个很好的理由去写平台平台特定的代码,例如汇编语言。这种情况下,按照下面的约定是合理的:
|
||||
|
||||
|
Reference in New Issue
Block a user