0%

如果已经完成了前面两个部分的学习,应该已经对当前的 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 环境变量来指出它所安装的位置。

阅读全文 »

“SwiftUI is an innovative, exceptionally simple way to build user interfaces across all Apple platforms with the power of Swift.”
—— Apple

SwiftUI 是苹果相关开发的新方式。2014年,在多年使用 Objective-C 编程应用程序之后,苹果推出了一种新的开源语言: Swift,震惊了世界。自发布以来,Swift 不断更新和发展,最终成为当今最受欢迎和最强大的编程语言之一。

2019年 SwiftUI 的推出为该行业的范式转变创造了另一个机会。在多年使用 UIKitAppKit 来创建用户界面之后,SwiftUI 为你的应用程序提供了一种全新的 UI 创建方式。在很多方面,SwiftUI 都比它的前辈更简单、更强大,更重要的是,它在苹果生态系统中是跨平台的。

不过,最重要的一点是 SwiftUI 的声明性。多年来,开发人员一直在使用命令式编程模型,处理状态管理问题和复杂的代码。但是现在,我们提供了一种声明性的、直接的方法来构建令人惊叹的用户界面。别担心;如果你喜欢使用 UIKitAppKit ,请放心,你可以将这些框架与你的 SwiftUI 代码集成在一起。

阅读全文 »

  • 解决 Ubuntu 首次安装 Mysql 之后,首次登录出现 ERROR 1698 (28000): Access denied for user 'root'@'localhost' 的方法

    解决步骤:

    • 查看 mysql 版本

      1
      2
      char@senyas:~/GoLand-2021.1.3/bin$ mysql --version
      mysql Ver 8.0.26-0 ubuntu0.20.04.2 for Linux on aarch64 ((Ubuntu))
    • 打开终端,输入:

      1
      sudo vi /etc/mysql/debian.cnf

      打开 /etc/mysql/debian.cnf 文件,显示如下:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # Automatically generated for Debian scripts. DO NOT TOUCH!
      [client]
      host = localhost
      user = debian-sys-maint
      password = HszR9Tt89bS0Pt57
      socket = /var/run/mysqld/mysqld.sock
      [mysql_upgrade]
      host = localhost
      user = debian-sys-maint
      password = HszR9Tt89bS0Pt57
      socket = /var/run/mysqld/mysqld.sock
    • 打开 mysql

      阅读全文 »