iOS开发中有一个方向叫,你想工程开发,曾经也试着话时间去研究过相关的技术,熟悉使用那些相关的工具,但是毕竟没有专门实战过项目,也就只能简单的入门一下。而随着iOS开发年限的增长,和所了解到的东西,发现有不少公司或者朋友都在关注安全这一块,虽然Apple已经把安全做得很到位了,但是还是有这一块的问题存在,所以我根据个人的能力并结合网上的相关资料,简单的整理了一下,不管是作为了解,还是项目实战,或者为了面试,我都希望能有所帮助……
07年由RRK三人主持开发,09年11月开源,12年1.0稳定版
特点
- 语言简单
- 实用,有效,高效
- 静态类型
- 编译型
- 开源
- 脚本化语法
- 函数式
- 面向对象
- 原始并发
- 协程(并发编程的管道)
- 垃圾回收
- 类型安全
- 内存安全
- UTF8编码
- 移除或异常无用包
- 内置高性能http server
- 完善简便的各种库(package)
- 调用C很简便
- 跨平台
- 作者之一是c的作者
优势
- 脚本化
- 静态+编译->速度(相比:动态+解释)
- 并发(运行时系统调度和算法)
劣势
- 语法糖少
- 速度不及C
- 第三方库较少
环境变量
- GOROOT:Go语言的当前安装目录
- GOPATH:Go语言工作区的结合(工作目录)
- GOBIN:可执行文件目录
- PATH:Go语言本身目录和Go程序生成可执行文件命令
(~/.bash_profile(单一用户),/etc/profile(全局用户)
- 相关目录$GOOS_$GOARCH: GOOS-操作系统,GOARCH-计算架构
工作区
- src:源码文件(代码包)
- pkg:存放归档文件(代码包,库)
- bin:Go程序可执行文件
源码文件
- 命令源码文件(功能):Go语言入口,声明自己属于main代码包,包含无参数声明和结果声明的main函数
- 库源码文件(功能):不具备命令源码文件的两个特征
- 测试源码文件(辅助):同上,但是名称为:_test.go后缀
测试函数(至少一个):Test(功能)或Benchmark(基准或性能)前缀,参数testing.T或testing.B
基本命令
- go run: 编译-临时-运行-可执行,归档文件
- a:强制编译,不管是不是最新
- n:打印编译需要的命令,不执行
- p n:并行编译,n为并行数
- a:列出被编译代码包名称(-a -v:所有涉及)
- work:临时工作目录路径,且不删除
- x:打印编译需要的命令,执行
- go build:编译代码包(库:不产生结果文件,只检查有效性。命令:生成可执行文件,结果文件)
- a:加入-编译所有涉及,不加入-只编译最新的
- go install:编译并安装代码包或源码文件
- go get:从远程代码仓库下载并安装代码包(git,Mercurial,svn,Bazaar)
- d:只下载不安装
- fix:下载后,先执行修正动作,在安装
- u:更新代码包
ds(显示指定目录的目录结构)/pds命令(显示指定代码包的以来关系)
DOC
- godoc -http=:8800
基础总结
- 只有package为main的包可以包含main函数
- 一个可执行文件有且仅有一个main函数
- import导入非main包
- 函数外包使用var申明和赋值全局变量
- type进行结构体和接口的声明
代码实例
// 当前程序的包名(package:非注释的第一行)
package main
// 导入其他包
import "fmt" // 格式
import . "os" // 省略
import io "io" // 别名
import _ "time" // 忽略
import (
"strings"
)
// 常量定义
const PI = 3.14
// 全局变量声明与赋值
var name = "iCocos"
// 一般类型的声明
type newtype int
// 结构体的声明
type gostruct = struct{}
// 接口的声明
type gointerface interface{}
// 以上三种都可以使用组
type (
byte int8
rune int 32
文本 string
)
// 由main函数作为程序入口和启动
func main() {
Printf("Hello World!")
}
可见性规则
常量,变量,类型,接口,结构体,函数
- 大小写区分:
- 小写为private
- 大写为public
- 陆续更新
- 01基础学习笔记
- 02Go语法初识
- 03类型与变量
- 04常量与运算符
- 05控制语句
- 06数组array
- 07切片slice
- 08map
- 09函数function
- 10结构struct
- 11方法method
- 12接口interface
- 13反射reflection
- 14并发concurrency
- 15项目与坑