0%

包的定义 => package 关键字,包名通常和目录名一致,不能包含 -

  • 一个文件夹就是一个包
  • 文件夹里面放的都是 .go 文件

包的导入 => import

  • 包导入路径是从 $GOPATH/src/ 后面的路径开始写起
  • 单行导入
  • 多行导入
  • 给导入的包起别名
  • 匿名导入 => sql 包导入时会提及
阅读全文 »

在需要研究一些app的时候我们希望直接能拿到这个软件的安装包,在iOS上就是 "xxx.ipa"。下面的步骤帮助我们获取一个appbundleID,然后使用工具下载安装包。这样我们就能对目标app进行研究。

Mac自带工具 Console

查看 bundle id,已经装在 iphone 里面的 app:

  • 用数据线连接手机和Mac.
  • 打开 Mac 应用Console.
  • 在左侧栏Devices中,选择你的设备
  • 运行你要查看的APP.
  • 在搜索栏里面输入App的名字.
  • 你可以看到在process列中找到SpringBoardMessage列中找到 Bootstrapping,点击这一行, bundleId 类似于com.xxxx.xxx.kids
阅读全文 »

如果已经完成了前面两个部分的学习,应该已经对当前的 go 语言有了一个完整的认识。为了加深理解,还需要对 go 语言中的重要概念加深理解,熟练掌握。学习新语言,基础一定是要打牢固的。

每个 Go 程序都是由包构成的。 程序从 main 包开始运行。本程序通过导入路径 "fmt""math/rand" 来使用这两个包。
按照约定,包名与导入路径的最后一个元素一致。例如,"math/rand" 包中的源码均以 package rand 语句开始。

示例程序如下:

1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
"math/rand"
)

func main() {
fmt.Println("My favorite number is", rand.Intn(10))
}
阅读全文 »

Migrating from 0.x to 1.0

We have a blog post explaining the changes in depth.

Specifying pod versions

When starting out with a project it is likely that you will want to use the latest version of a Pod. If this is the case, simply omit the version requirements.

1
pod 'SSZipArchive'

Later on in the project you may want to freeze to a specific version of a Pod, in which case you can specify that version number.

1
pod 'Objection', '0.9'
阅读全文 »

先上一段代码,具体的用法后面补上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

let tap = UITapGestureRecognizer.init(target: self, action: #selector(tapEvent))
tap.delegate = self
self.isUserInteractionEnabled = true
self.addGestureRecognizer(tap)

/// tap event
@objc private func tapEvent() {
isHidden = true
}

/// MARK: - UIGestureRecognizerDelegate
extension FilterByTimeContentView: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view?.isDescendant(of: m_collectionView) ?? true {
return false
}
return true
}
}
阅读全文 »

引言

Go 是一门全新的语言。尽管它从既有的语言中借鉴了许多理念,但其与众不同的特性, 使得使用 Go 编程在本质上就不同于其它语言。将现有的 C++Java 程序直译为 Go 程序并不能令人满意——毕竟Java程序是用Java编写的,而不是Go。 另一方面,若从Go的角度去分析问题,你就能编写出同样可行但大不相同的程序。 换句话说,要想将Go程序写得好,就必须理解其特性和风格。了解命名格式化程序结构等既定规则也同样重要,这样你编写的程序才能更容易被其他程序员所理解。

本文档就如何编写清晰、地道的Go代码提供了一些技巧。它是对语言规范、 Go语言之旅以及 如何使用Go编程的补充说明,因此我们建议您先阅读这些文档。

示例

Go包的源码不仅是核心库,同时也是学习如何使用 Go 语言的示例源码。 此外,其中的一些包还包含了可工作的,独立的可执行示例,你可以直接在 golang.org 网站上运行它们,比如 这个例子 (单击文字“示例”来展开它)。如果你有任何关于某些问题如何解决,或某些东西如何实现的疑问, 也可以从中获取相关的答案、思路以及后台实现。

格式化

格式化问题总是充满了争议,但却始终没有形成统一的定论。虽说人们可以适应不同的编码风格, 但抛弃这种适应过程岂不更好?若所有人都遵循相同的编码风格,在这类问题上浪费的时间将会更少。 问题就在于如何实现这种设想,而无需冗长的语言风格规范。

Go 中我们另辟蹊径,让机器来处理大部分的格式化问题。go fmt 程序(也可用 go fmt,它以包为处理对象而非源文件)将Go程序按照标准风格缩进、 对齐,保留注释并在需要时重新格式化。若你想知道如何处理一些新的代码布局,请尝试运行 go fmt ;若结果仍不尽人意,请重新组织你的程序(或提交有关 gofmtBug),而不必为此纠结。

阅读全文 »

Go 开发环境配置

官方二进制发行版 可支持FreeBSD、Linux、Mac OS X和Windows操作系统以及32位(386)和64位(amd64)的 x86 处理器架构。

Linux、Mac OS X 和 FreeBSD 的安装包

  • 下载此压缩包并提取到 /usr/local 目录,在 /usr/local/go 中创建 Go目录树。例如:
1
tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz

该压缩包的名称可能不同,这取决于你安装的Go版本和你的操作系统以及处理器架构。

(此命令必须作为root或通过 sudo 运行。)

  • 要将 /usr/local/go/bin 添加到 PATH 环境变量, 你需要将此行添加到你的 /etc/profile(全系统安装)或 $HOME/.profile 文件中:
1
export PATH=$PATH:/usr/local/go/bin

安装到指定位置

Go 二进制发行版假定它们会被安装到 /usr/local/go (或Windows下的 c:\Go)中,但也可将Go工具安装到不同的位置。 此时你必须设置 GOROOT 环境变量来指出它所安装的位置。

阅读全文 »